說我有兩個文件蒙戈:是能夠滿足「與」條件對兩個文件
/*1*/
{
"id":1,
"name":"natty",
"subject_enrolled":"english"
}
/*2*/
{
"id":2,
"name":"natty",
"subject_enrolled":"science"
}
理想的情況下,它應該是相同的文檔,與subject_enrolled是具有這兩個問題的陣列。但由於某種原因,我保持我的數據是這樣的。 現在,我想寫一個查詢,它將檢索所有已經註冊了「英語」和「科學」的學生。
我想下面的查詢:
db.students.find({"subject_enrolled":{"$in":["science", "english"]}})
但是,這是錯誤的,如果堂妹誰註冊的唯一的科學任何學生也將在結果中。我不能使用「全部」,因爲科學和英語都有兩個不同的文檔。
有沒有辦法輕鬆有效地實現這一點?
由於mongo中沒有連接,因此無法直接對其進行查詢。如何使用聚合框架?按ID分組,使用$ addToSet添加所有主題,然後使用$ all的匹配階段? –
@IshanSoni謝謝Ishan給你看。是。我嘗試了聚合。我在這裏給出了我在下面試過的查詢。但我擔心表現。有沒有其他方法可行? – Nattyk
我想不出有什麼辦法。等待其他人迴應,同時謹防聚合管道的一些限制。 https://docs.mongodb.com/manual/core/aggregation-pipeline-limits/#result-size-restrictions –