我有一份文件:
{
_id: 98556a665626a95a655a,
first_name: 'Panda',
last_name: 'Panda,
notifications: [{
_id: '',
// ...
}]
}
我想返回以下回复:
{
_id: 98556a665626a95a655a,
first_name: 'Panda',
last_name: 'Panda',
notifications: 2
}
问题在于通知计数字段,
我使用了Mongoose NodeJS包,我尝试了以下方法:
UserDBModel.findOne({_id: uid}, {notifications: {$size: '$notifications'}}, function(err, user){ });
但似乎行不通。 有人可以帮帮我吗? :)
提前致谢。
答案 0 :(得分:2)
也许,你可以在节点中做这样的事情。
FormPage
既然你正在使用JS,也可以使用它的力量! :)
答案 1 :(得分:2)
将aggregate
与project
管道运算符一起使用。
UserDBModel.aggregate()
.match({_id: uid})
.project({
first_name: 1,
last_name: 1,
notifications: {$size:"$notifications"}
})
.exec(function(err, notifications) {
// notifications will be an array, you probably want notifications[0]
});
请注意,您必须明确指定项目操作员的字段。
答案 2 :(得分:0)
我发现对我有用的是创建猫鼬虚拟属性。
Schema.virtual('notifications_count').get(function() {
if (this.notifications) {
return this.notifications.length;
}
});