Сценарий: Рассмотрим документ, присутствующий в MongoDB в коллекции под названием «MyCollection»
{
"_id" : ObjectId("512bc95fe835e68f199c8686"),
"author": "dave",
"score" : 80,
"USER" : {
"UserID": "Test1",
"UserName": "ABCD"
}
},
{ "_id" : ObjectId("512bc962e835e68f199c8687"),
"author" : "dave",
"score" : 85,
"USER" : {
"UserID": "Test2",
"UserName": "XYZ"
}
},
...
Я знаю UserID
и хотите получать на его основе.
Issue: Я попытался следующий код с Node.js + MongoDB-родной драйвер:
db.Collection('MyCollection', function (err, collection) {
if (err) return console.error(err);
collection.aggregate([
{ $match: { '$USER.UserID': 'Test2'} },
{$group: {
_id: '$_id'
}
},
{
$project: {
_id: 1
}
}
], function (err, doc) {
if (err) return console.error(err);
console.dir(doc);
});
});
но не работает, как ожидалось.
Вопрос: Может ли кто-нибудь знать, как сделать то же самое с оператором $match
в запросе MongoDB?
Обновление: У меня нет ошибок. Но объект будет погашен, т.е.
[]
Вывести доллар в 'USER.UserID', оператор' $ match' работает точно так же, как обычный запрос – Sammaye
Даже после удаления '$' out я все еще получаю '[]' –
Какая версия У MongoDB есть ли у вас? У меня работает 2.4, и это сработало для меня. – gustavohenke