我想更新子文档的值,其中邮件具有特定ID,并且用户ID在收件人数组中。我想用指定的用户ID更新匹配对象的值。
当我在MongoDB CLI上运行以下查询时,一切正常并且值已更新:
db.getCollection('messages').update({
_id : ObjectId("57d7edb8c497a75a6a7fde60"),
"recipients.userId" : "5789127ae2bcc79326462dbc"
},{
$set : {"recipients.$.read": true}
});
但是当我在FeathersJS应用程序中通过JS运行以下查询时:
messageService.update({
_id : '57d7edb8c497a75a6a7fde60',
"recipients.userId" : "5789127ae2bcc79326462dbc"
},{
$set: {"recipients.$.read": true}
}).then(function(e) {
console.log(e)
}).catch(function(e) {
console.log(e);
});
我收到错误:
GeneralError:位置运算符未找到查询所需的匹配项。未更新的更新:收件人。$。阅读
我做错了什么?
是否有更好的方法可以同时更新多条消息?
谢谢!
答案 0 :(得分:1)
要根据查询更新一个或多个记录,您需要通过将id
设置为null
并将查询放入params.query
来调用service method:
messageService.update(null, {
$set: {"recipients.$.read": true}
}, {
query: {
_id : '57d7edb8c497a75a6a7fde60',
"recipients.userId" : "5789127ae2bcc79326462dbc"
}
}).then(function(e) {
console.log(e)
}).catch(function(e) {
console.log(e);
});