【发布时间】:2012-03-27 05:03:44
【问题描述】:
我想在 MongoDb 中进行高效查询,以查找在用户组中列出其用户 ID 的所有用户。理想情况下,我想将此作为对 Mongodb 的单个请求。 我想要的对应于 SQL 中的嵌套选择。 我在 mongo shell 中试过这个:
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 运算符中的用户 ID 数组,以便可以通过单个请求进行整个查询。
这样的“嵌套查询”不起作用:
db.user.find({_id:{$in:db.usergroup.find({_id:"g1"},{_id:0,Users:1})}}).forEach(printjson);
给出这个错误: 3 月 27 日星期二 06:17:41 未捕获的异常:错误:{“$err”:“无效查询”,“代码”:12580 } 加载失败:mongoNestedSelect.js
1) 这在 mongodb 中是否可行?
2)如何使用官方c#驱动来做到这一点?
【问题讨论】:
标签: mongodb mongodb-.net-driver