假设我在某个集合中有以下文档
[{
"name": "Man1",
"Childrens": [
{
"name": "Children 1",
"age": "12"
},
{
"name": "Children 2",
"age": "18"
},
]
},
{
"name": "Man1",
"Childrens": [
{
"name": "Children 3",
"age": "12"
},
{
"name": "Children 4",
"age": "18"
},
]
}
]
我想得到其中一个孩子的名字是“Children 1”的文件
我想通过 .net mongo 驱动程序实现这一点
var bQuery = String.Format("{{ '{0}':'{1}' }}","Childrens.name","Children 1");
var filter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(bQuery);
result = await db.GetCollection<T>(collectionName).Find<T>(filter).ToListAsync();
但这返回空列表,就像我做的那样
var bQuery = String.Format("{{ '{0}':'{1}' }}","name","Man1");
有用
所以当我们通过嵌套属性搜索时我无法让它工作
请尝试使用以下代码,我已成功测试:
{ "Childrens": { $elemMatch: { "name": "Children 1"} } }
你的代码是:
var filter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{ \"Childrens\": { $elemMatch: { \"name\": \"Children 1\"} } }");
result = await db.GetCollection<T>(collectionName).Find<T>(filter).ToListAsync();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句