2017-08-22 162 views
0

我有一個具有以下收集數據庫:蒙戈DB查詢制定

{id1: "1", id2: "a"}, {id1: "2", id2: "a"}, {id1: "3", id2: "a"}, {id1: "1", id2: "b"}, {id1: "2", id2: "b"} 

我想找到id2給出id1名單:1,2

給出的應該是b給出的答案它是唯一的id2只有1,2

如果給出的'id1'的列表是1,2,3,那麼找到的'id2'應該是'a',因爲'a'與1,2有關和3

如何在Mongodb上優先使用聚合進行查詢。

+1

這個問題沒有道理,聞起來像作業 – robjwilkins

+0

我進一步解釋了這個問題,如果你可以幫助這將是偉大的 – lenq297

回答

0

我想我明白你想要做什麼。通過ID2

db.<collection_name>.aggregate([ 
    {$group:{_id:"$id2",id1Set:{$addToSet:"$id1"}}}, 
    {$match:{"id1Set":{$size:2,$all:["1","2"]}}} 
]) 

這個查詢將組的文件,並創建包含ID1的值設置:您可以彙總查詢做到這一點,但它是不是很簡單。然後它匹配組中的文檔,查看id1Set的大小(應爲2),id1Set中的值應包含「1」和「2」的所有值。

由於您的示例數據包含id2(「1」和「2」,而不是1和2)的字符串值,所以匹配取決於字符串值而不是數字。

+0

我會永遠能夠使用[「1」,「2」]從一個以前的聚合?我從前一場比賽中發現了陣列,然而,當我把$ all:「arrayName」,它給了我錯誤「$所有需要一個數組」..我沒有[「1」,「2」]之前我開始聚合查詢 – lenq297

+0

也許更清楚,如果你問一個新的問題,並提供您創建的查詢 – robjwilkins