Я хочу сделать эффективный запрос в MongoDb, чтобы найти всех пользователей, чьи идентификаторы пользователей перечислены в группе пользователей. В идеале я хочу сделать это как один запрос к Mongodb.
То, что я хочу, соответствует вложенным выборкам в SQL.
Я пробовал это в оболочке Монго:
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, извлеченный с помощью запроса, чтобы весь запрос мог быть выполнен с помощью одного запроса.
Такой «вложенный запрос» не работает:
db.user.find({_id:{$in:db.usergroup.find({_id:"g1"},{_id:0,Users:1})}}).forEach(printjson);
Дает эту ошибку:
Вт 27 марта 06:17:41 необработанное исключение: ошибка: {"$ err": "неверный запрос", "код": 12580}
не удалось загрузить: mongoNestedSelect.js
1) это возможно в mongodb и как?
2) как это сделать с официальным драйвером c #?