我有一个简单的查询:
[
user:{
_id : ObjectId('5c058b38365f0e1a0848d61d')
receipts:[1,2,3,4,5,6,7]
},
user:{
_id : ObjectId('5c058b38365f0e1a0848ty56')
receipts:[1,2,3,4,5]
},
]
我需要获取收据的数组长度,我尝试了一些在网上找到的代码,但是没有一个起作用,这里有一个短代码:
mongo.collection('links').aggregate([{
$match:{_id: mongo.ObjectId('5c058b38365f0e1a0848d61d')},
$project: {
usersCount: {
$size: "$users.receipts"
}
}
}]).toArray(function(err, results) {
console.log(err,results);
});
我得到了错误:
** {MongoError:管道阶段规范对象必须恰好包含一个字段。
at process._tickCallback (internal/process/next_tick.js:61:11) ok: 0, errmsg: 'A pipeline stage specification object must
仅包含一个字段。”,代码:40323,代码名称: 'Location40323',名称:'MongoError',
[Symbol(mongoErrorContextSymbol)]:{}} null **
谢谢
答案 0 :(得分:1)
您缺少一堆花括号,这就是为什么您看到异常的原因。以下应该起作用:
[{
$match: {
_id: mongo.ObjectId('5c058b38365f0e1a0848d61d')
}
}, {
$project: {
"usersCount": { $size: "$data.user.receipts" }
}
}]