C# (mongodb)使用csharp获取bson对象中的bson对象
我有一个包含以下文档的集合:C# (mongodb)使用csharp获取bson对象中的bson对象,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我有一个包含以下文档的集合: { field1: {subfield1:{ssfield1:5,ssfield2:6},subfield2:6}, field2: 1, ... } 我只想获取子字段,但我不确定如何从csharp查询它(它似乎没有在bsondocument中返回bsondocument) 有什么帮助吗 我试过这个: String c = "mongodb://"+myip; MongoServer server = MongoServer.Create(
{
field1: {subfield1:{ssfield1:5,ssfield2:6},subfield2:6},
field2: 1,
...
}
我只想获取子字段,但我不确定如何从csharp查询它(它似乎没有在bsondocument中返回bsondocument)
有什么帮助吗
我试过这个:
String c = "mongodb://"+myip;
MongoServer server = MongoServer.Create(c);
MongoDatabase db = server.GetDatabase(mydb);
var collection = db.GetCollection(col);
string[] fields = new string[] { "field1" };
MongoCursor cursor = collection.Find().SetFields(fields);
但它似乎又回来了
{subfield2:6}
我创建了一个集合,其中一个文档与您的示例文档非常相似:
> db.test.find().pretty()
{
"_id" : ObjectId("518ac1aa92f1c388279a9979"),
"field1" : {
"subfield1" : {
"ssfield1" : 5,
"ssfield2" : 6
},
"subfield2" : 6
},
"field2" : 1
}
>
在显示我试图复制您的C#代码时得到的结果之前,让我们先看看MongoDB shell中的同一个查询:
> db.test.find({}, { field1 : 1 }).pretty()
{
"_id" : ObjectId("518ac1aa92f1c388279a9979"),
"field1" : {
"subfield1" : {
"ssfield1" : 5,
"ssfield2" : 6
},
"subfield2" : 6
}
}
>
这里有几点需要注意:
foreach (var document in collection.FindAll().SetFields("field1"))
{
Console.WriteLine(document.ToJson(new JsonWriterSettings { Indent = true }));
}
我从循环中得到的结果是:
{
"_id" : ObjectId("518ac1aa92f1c388279a9979"),
"field1" : {
"subfield1" : {
"ssfield1" : 5.0,
"ssfield2" : 6.0
},
"subfield2" : 6.0
}
}
这与MongoDB shell的输出基本相同
如果您还有任何问题,请告诉我。尝试collection.find().first().GetElement(“field1”).value;