我想搜索具有相同action_object.reply.idaction_target.reply.id的所有活动。像这样:

Activity
  .find({ $or: [
    { 'action_object.reply.id': replyId },
    { 'action_target.reply.id': replyId }
  ]});


但我也只想像这样更新removed属性:

Activity
  .update({ 'action_object.reply.id': replyId }, {
            'action_object.reply.removed': true }, { multi: true });

Activity
      .update({ 'action_target.reply.id': replyId }, {
                'action_target.reply.removed': true }, { multi: true });


是否可以将这两个查询组合在一起?我想更新action_target.reply.removed其中action_target.reply.idaction_object.reply.removed其中action_object.reply.id

或者我必须像上面一样为它编写两个不同的查询。

最佳答案

update调用的第一个参数是查询对象,因此您可以简单地使用相同的$ or查询。 Mongo将更新查询检索的所有文档。

Activity
  .update({ $or: [
    { 'action_object.reply.id': replyId },
    { 'action_target.reply.id': replyId }
  ]}, {'action_object.reply.removed': true }, { multi: true });

关于node.js - Mongoose 用$或条件更新文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33380332/

10-12 16:16