0

我想更新子文档的值,其中消息具有特定的 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:位置运算符未从查询中找到所需的匹配项。未扩展更新:收件人.$.read

我究竟做错了什么?

有没有更好的方法一次更新多条消息?

谢谢!

4

1 回答 1

2

要通过查询更新一条或多条记录,您需要通过将查询设置为并将查询放入来调用服务方法idnullparams.query

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);
});
于 2016-09-19T03:46:39.007 回答