在每个文档中我都有一些字段(例如"myfield").myfield是int32类型的值.
请告诉我(用微小的代码示例)如何进行查询:
"得到所有myfield> 10和myfield <20"
我正在使用官方C#驱动程序.
非常感谢你!!!
我在Rest上使用mongodb。每个文档都由一个字段Id(Guid)和Name(字符串)组成
这是我访问网页时显示的内容:
"_id" : { "$binary" : "Oq4RFClrRUOtIp89AQTGPw==",
"$type" : "03"
"name" : "HelloWorld"
Run Code Online (Sandbox Code Playgroud)
在mongodb中,我的Guid转换为UUID(例如,我的JMongoBrowser),并显示为46eb229f-b493-5630-b0d7-aa00499fafa0。
但是,当我访问其余网页时,它被分为两部分(二进制文件和一种类型)。那么如何将其转换为C#对象呢?
谢谢
例如,我有n个文件:
{ _id : 1 }
{ _id : 2 }
{ _id : 3 }
...
{ _id : n }
Run Code Online (Sandbox Code Playgroud)
根据某种逻辑,我得到了m _ids的数组:[1,30,500,1001,...,i];
是否可以使用_ids数组发出一个请求来检索这些m文档的Cursor ?我不想提出单独的请求,例如:
db.things.findOne({_id:1});
db.things.findOne({_id:30});
db.things.findOne({_id:500});
db.things.findOne({_id:1001});
...
db.things.findOne({_id:i});
如果有可能,那么在JavaScript Shell和官方C#驱动程序上如何做到这一点?
谢谢!!!
我在C#MongoDB中表达此查询时遇到问题,我希望它返回与MongoVue objectID不相同的所有结果"000000000000000000000000"; 但我无法在我的计划中使用它.
{"ProfilePictureId" : {$ne: new ObjectId ("000000000000000000000000")}}
Run Code Online (Sandbox Code Playgroud)
我正在使用官方C#驱动程序:
var query = new QueryDocument();
foreach (BsonDocument book in col.Find(query))
{
...
}
Run Code Online (Sandbox Code Playgroud) 我在使用BsonClassMap映射某些类时遇到问题。我有3个这样的课程:
abstract class A {
public string FirstName { get; set; }
}
abstract class B : A{
public string LastName { get; set; }
}
class C : B {
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我只希望将类C中可见的属性映射到数据库。
BsonClassMap.RegisterClassMap<C>(map =>
{
map.MapProperty(c => c.FirstName).SetElementName("fn");
map.MapProperty(c => c.LastName).SetElementName("ln");
map.MapProperty(c => c.Age).SetElementName("age");
});
Run Code Online (Sandbox Code Playgroud)
这引发了一个异常,从我设法发现的异常中似乎是因为这些属性不属于C类。我应该如何映射这种结构?
使用官方C#驱动程序制作MongoDB POCO实体的新副本的最佳方法是什么?
我试过这个;
public T Clone()
{
var bsonWriter = new BsonDocumentWriter(new BsonDocument(), BsonDocumentWriterSettings.Defaults);
BsonSerializer.Serialize(bsonWriter, this);
var newDoc = bsonWriter.ToBsonDocument(typeof(T));
var e = BsonSerializer.Deserialize(newDoc , typeof(T));
return e as T;
}//Clone()
Run Code Online (Sandbox Code Playgroud)
但我得到的只是一个充满空值的空对象.顺便说一句,POCO对象不会从BsonDocument继承,但它确实很好地序列化,我想要利用它所装饰的所有Bson属性,这就是为什么我不想以其他方式复制它.我想要一个副本,因为数据库驱动程序会这样做.
我的数据有以下结构
public enum ParamType
{
Integer=1,
String=2,
Boolean=3,
Double=4
}
public class Gateway
{
public int _id { get; set; }
public string SerialNumber { get; set; }
public List<Device> Devices { get; set; }
}
public class Device
{
public string DeviceName { get; set; }
public List<Parameter> Parameters { get; set; }
}
public class Parameter
{
public string ParamName { get; set; }
public ParamType ParamType { get; set; }
public string Value { get; set; } …Run Code Online (Sandbox Code Playgroud) 我有一个编码问题.我的MongoDB中有错误编码的文本.我的数据库中文本的源文件以ISO-8859-1编码.现在,在我的数据库中查看它时,一些字符被打破(变成' ').
目前,在从db检索文本时,我尝试了以下代码.
var t = Collection.FindOne(Query.EQ("id", "2014121500892"));
string message = t["b203"].AsString;
Console.WriteLine(ChangeEncoding(message));
Run Code Online (Sandbox Code Playgroud)
static string ChangeEncoding(string message)
{
System.Text.Encoding srcEnc = System.Text.Encoding.GetEncoding("ISO-8859-1");
System.Text.Encoding destEnc = System.Text.Encoding.GetEncoding("UTF-8");
byte[] bData = srcEnc.GetBytes(message);
byte[] bResult = System.Text.Encoding.Convert(srcEnc, destEnc, bData);
return destEnc.GetString(bResult);
}
Run Code Online (Sandbox Code Playgroud)
static string ChangeEncoding(string message)
{
File.WriteAllText("text.txt", message, Encoding.GetEncoding("ISO-8859-1"));
return File.ReadAllText("text.txt");
}
Run Code Online (Sandbox Code Playgroud)
db中的示例文本:
Box aus Pappef rA8-Lernk rtchen
我希望能够在控制台中将其打印为:
Box ausPappefürA8-Lernkärtchen
我使用以下inc语句进行更新以增加字段的值
var update = Updates.Inc(x => x.Version, 1);
await collection.FindAndUpdateOneAsync(myQuery,update);
Run Code Online (Sandbox Code Playgroud)
我想从版本中检索新的(或旧的)值.有内置的方法吗?
由于交易问题,我不想进行新的单独查询.
我在MongoDB中有一个看起来像这样的文档:
{
"Id":"123",
"Product": "test",
"Tags":[
{
"Name": "name",
"Categories": [
{
//item
},
{
//item
}
]
},
{
"Name": "name",
"Categories": [
{
//item
},
{
//item
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要添加一个新的Item,它需要被添加到所有的类别Tags的该元素Product由它Id。例如,当我插入Item 3文档时,应如下所示:
{
"Id":"123",
"Product": "test",
"Tags":[
{
"Name": "name",
"Categories": [
{
//item 1
},
{
//item 2
},
{
//item 3
}
]
},
{
"Name": "name",
"Categories": [
{
//item 1
},
{ …Run Code Online (Sandbox Code Playgroud)