рассмотреть следующие записи:Как запросить родителя на основе _id?
запись пользователя
{
"_id" : ObjectId("5234ccb7687ea597eabee677"),
"class" : [
{ "_id" : ObjectId("5234ccb7687ea597eabee671", "num" : 10, "color" : "blue" },
{ "_id" : ObjectId("5234ccb7687ea597eabee672", "num" : 100, "color" : "blue" }
]
}
этот пользователь имеет два класса суб записи, теперь мне нужен запрос, который находит все пользователи, которые имеют класс собственности, где «class._id» имеет значение, по меньшей мере, один пользователей «class._id»
здесь является более подробно пример:
suppos е есть четыре пользователя:
A:{_id:432645624232345,class:[{_id:123,name:'foo'}]}
B:{_id:432645624232555,class:[{_id:555,name:'foo'},{_id:123,name:'foo'}]}
C:{_id:432645344232345,class:[{_id:555,name:'foo'},{_id:111,name:'www'}]}
D:{_id:432644444232345,class:[{_id:222,name:'sss'},{_id:555,name:'www'},{_id:123,name:'foo'}]}
теперь, если B вход, мне нужно запросить все пользователь, чей класс поддокумент содержит, по меньшей мере, один документ, который это _ID == 555 или _id == 123 (555 и 123 приходят от B пользователь), в этом случае результат запроса должен быть:
A:{_id:432645624232345,class:[{_id:123,name:'foo'}]} // match _id=123
B:{_id:432645624232555,class:[{_id:555,name:'foo'},{_id:123,name:'foo'}]} //match _id=123 and _id=555
C:{_id:432645344232345,class:[{_id:555,name:'foo'},{_id:111,name:'www'}]} //match _id=555
D:{_id:432644444232345,class:[{_id:222,name:'sss'},{_id:555,name:'www'},{_id:123,name:'foo'}]} ///match _id=123 and _id=555
который является всем пользователем.
до сих пор я получаю это:
{"class._id" : { $in : ["5234ccb7687ea597eabee671", "5234ccb7687ea597eabee672"] } }
но когда другой пользователь Войти при условии class._id запроса отличается. Есть ли у оператора какие-либо операторы?
{"class._id" : { $in : req.user.class } }
Надеюсь, я поняла.
да, это работает, но мне было интересно, есть ли способ сборки для достижения этого в mongodb? – paynestrike
Самый близкий к встроенному методу для этого, возможно, это: '{" class._id ": {$ in: req.user.class.map (function (item) {return item._id;})}}' – Schiller