![](/img/trans.png)
[英]How do I find all documents in mongodb collection that contain field/value pair?
[英]How do I write a query in MongoDB that gives me all documents that contain all specified nested documents?
假設我有一個MongoDB文檔,其中2個嵌入式文檔存儲在數組“ AD”中。 這些嵌入文檔中的每一個都將具有我需要匹配的特定數據。 如何編寫查詢以查找此文檔?
在C#驅動程序中,我目前這樣編寫:
var q1 = Query.And(
Query.EQ("AD.ABC1", "123"),
Query.EQ("AD.YOB", "1969")
);
var q2 = Query.And(
Query.EQ("AD.ABC1", "456"),
Query.EQ("AD.YON", "1970")
);
var query = Query.And(q1, q2);
這給了我一個查詢:
{
"$and": [
{
"AD.ABC1": "123"
},
{
"AD.YOB": "1969"
},
{
"AD.ABC1": "456"
},
{
"AD.YON": "1970"
}
]
}
這將返回嵌入了與q1或q2匹配的文檔的文檔。 我想要它的交集-即具有嵌入的文檔同時匹配q1和q2的文檔。
謝謝
解決了
var q1 = Query.ElemMatch("AD",
Query.And(
Query.EQ("ABC1", "123"),
Query.EQ("YOB", "1969")
)
);
var q2 = Query.ElemMatch("AD",
Query.And(
Query.EQ("ABC1", "456"),
Query.EQ("YOB", "1970")
)
);
var query = Query.And(q1, q2);
這給了我
{
"$and": [
{
"AD": {
"$elemMatch": {
"ABC1": "123",
"YOB": "1969"
}
}
},
{
"AD": {
"$elemMatch": {
"ABC1": "456",
"YOB": "1970"
}
}
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.