我想在MongoDb中進行高效的查詢,以查找所有在用戶組中列出其用戶標識的用戶。理想情況下,我想把它作爲對Mongodb的單個請求。 我想要的對應於SQL中的嵌套選擇。 我在蒙戈外殼試過這樣:如何在嵌套的Sql select查詢中工作嵌套的MongoDb查詢
db.user.save({_id:"u1", Name:"u1 name"});
db.user.save({_id:"u2", Name:"u1 name"});
db.user.save({_id:"u3", Name:"u3 name"});
db.usergroup.save({_id:"g1", Users: ["u2","u3"]});
現在這裏是選擇我想做的事,但沒有硬編碼[「U2」,「U3」]數組:
db.user.find({_id:{$in:["u2","u3"]}}).forEach(printjson);
這工作正常並返回u2和u3的用戶對象。
現在的問題是如何獲取用查詢提取的$ in操作符中的userid數組,以便可以使用單個請求來創建整個查詢。
A 「嵌套查詢」 像這樣不工作:
db.user.find({_id:{$in:db.usergroup.find({_id:"g1"},{_id:0,Users:1})}}).forEach(printjson);
給出了這樣的錯誤: 週二3月27日6時17分41秒未捕獲的異常:錯誤:{ 「$ ERR」: 「無效查詢」 ,「代碼」:12580} 未能加載:mongoNestedSelect.js
1)這是可能的在mongodb和如何?
2)如何用官方的c#驅動程序做到這一點?
好,謝謝。所以「真正的嵌套查詢」在MongoDB中是不可能的。是的,我同意你對ObjectIds的評論,但我只是在這個例子中使用了字符串來保持簡單。 – ssn 2012-03-27 06:58:03
正確的是,沒有嵌套的查詢,您的數據需要進行結構化,以便您可以通過對數據庫的單個(或最少數量)請求獲得所需的結果。 – 2012-03-27 16:29:48