簡體   English   中英

如何在MongoDB中編寫查詢,使我獲得包含所有指定嵌套文檔的所有文檔?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM