I want to make an efficient query in MongoDb to find all users who have their userids listed in a usergroup. Ideally I want to make this as a single request to Mongodb. What I want corresponds to nested selects in SQL. I have tried this in the 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"]});
Now here is the select I want to do, but without hardcoding the ["u2","u3"] array:
db.user.find({_id:{$in:["u2","u3"]}}).forEach(printjson);
This works fine and returns the user objects for u2 and u3.
Now the question is how to get the array of userids in the $in operator extracted with a query such that the entire query can be made with a single request.
A "nested query" like this does not work:
db.user.find({_id:{$in:db.usergroup.find({_id:"g1"},{_id:0,Users:1})}}).forEach(printjson);
Gives this error: Tue Mar 27 06:17:41 uncaught exception: error: { "$err" : "invalid query", "code" : 12580 } failed to load: mongoNestedSelect.js
1) is this possible in mongodb and how ?
2) how to do this with the official c# driver ?