2013-12-20 58 views
0

我正在使用MongoDB C#API。在MongoDB中使用數組查詢文檔C#

下面是MongoDB的文檔結構:

{ 
    "_id" : ObjectId("4fc6aaaef8594f055c4169f2"), 
    "Status" : "A", 
    "productTagContainerId" : "ptag_item_45688ab87bf796", 
    "productTag" : [{ 
    "id" : "root", 
    "idText" : "", 
    "tagSource" : "Category", 
    "value" : "rootValue" 
    }, 
    "id" : "test1", 
    "idText" : "", 
    "tagSource" : "Category", 
    "value" : "test1Value" 
}, 

"id" : "test2", 
"idText" : "", 
    "tagSource" : "Category", 
    "value" : "test2Value" 
}] 
} 

我試圖讓這個文件只在「值」中的「productTag」分別匹配test1Value和test2Value。 我試過像下面這樣的查詢,但返回null:

finalQuery = Query.ElemMatch("productTag", 
    Query.And(
     Query.EQ("value", "test1Value"), 
     Query.EQ("value", "test2Value") 
    ) 
); 

請指教!!!

回答

2

通過使用ElemMatch,查詢將只匹配的文檔其中兩個查詢的術語都在同一productTag數組元素(這是不可能在這種情況下)滿足。

而是使用了一個點號這樣的查詢:

var finalQuery = Query.And(
    Query.EQ("productTag.value", "test1Value"), 
    Query.EQ("productTag.value", "test2Value") 
); 
+0

非常感謝!這工作 –