我想在MongoDb中进行一次高效的查询,以查找在用户组中列出了其用户名的所有用户.理想情况下,我希望将此作为对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"]});
下面是我想做的 Select ,但不需要硬编码["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);
给出了以下错误:
1) 这在mongodb中可能吗?如何实现?
2) 如何使用官方的c#driver?