假设我有一个MongoDB文档,其中包含存储在数组“AD”中的2个嵌入文档。这些嵌入式文档中的每一个都将具有我需要匹配的特定数据。如何编写查询来查找此文档?
在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"
}
]
}
这将返回具有与EITHER q1或q2匹配的嵌入文档的文档。我想要这个的交集 - 即具有与两个q1和q2匹配的嵌入文档的文档。
由于
答案 0 :(得分:0)
完成了工作
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"
}
}
}
]
}