我更新了我的Meteor.users()集合以包含'profile'子目录和内部配置文件我有一个名为'notifications'的对象数组。通知的对象结构如下所示:
'profile.notifications': {
prompt: prompt,
message: message,
hasBeenRead: false,
timestamp: Messages.find({}, {sort: {"ts": 1}, limit: 0}).fetch().pop().ts,
}
有没有办法使用Mongo的方法之一将数组中的所有对象的hasBeenRead
更改为true?我可以使用数组索引(下面的代码)只更改一个元素,但我不能使用这种方法一次更改所有元素。
Meteor.users.update({
_id: Meteor.userId()
}, {
'profile.notifications.0.hasBeenRead': true //only changes first elem
}
})
答案 0 :(得分:1)
目前无法直接通过mongo更新阵列的所有元素。您可以向mongo发送多个更新或提取通知数组,更新所有元素,然后一次更新文档。
var notifications = Meteor.user().profile.notifications;
notifications.forEach(function(e,i,a){a[i].hasBeenRead=true});
Meteor.users.update({ _id: Meteor.userId() },
{ $set: { 'profile.notifications': notifications }});