Я хочу сделать эффективный запрос в MongoDb, чтобы найти всех пользователей, у которых есть свои пользователи, перечисленные в группе пользователей. В идеале я хочу сделать это как единый запрос к Mongodb. То, что я хочу, соответствует вложенным выборам в SQL. Я пробовал это в оболочке mongo:
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"]});
Теперь вот выбор, который я хочу сделать, но без hardcoding массив [ "u2", "u3" ]:
db.user.find({_id:{$in:["u2","u3"]}}).forEach(printjson);
Это отлично работает и возвращает пользовательские объекты для u2 и u3.
Теперь вопрос заключается в том, как получить массив идентификаторов пользователя в операторе $in, извлеченном с помощью запроса, чтобы весь запрос мог быть сделан с помощью одного запроса.
"Вложенный запрос" вроде этого не работает:
db.user.find({_id:{$in:db.usergroup.find({_id:"g1"},{_id:0,Users:1})}}).forEach(printjson);
Дает эту ошибку: Tue Mar 27 06:17:41 uncaught exception: error: { "$ err": "invalid query", "code": 12580} не удалось загрузить: mongoNestedSelect.js
1) это возможно в mongodb и как?
2) как это сделать с официальным драйвером С#?