为什么我不能使用mongodb更新文档中的所有匹配字段?

时间:2015-12-01 19:09:53

标签: javascript node.js mongodb meteor

说我有一个看起来有点像这样的文件。

{
  _id: ObjectId,
  name: 'corvid',
  games: [{
    name: 'world-of-warcraft',
    lastLogin: ISODate
  }, {
    name: 'starcraft',
    lastLogin: ISODate
  }, {
    name: 'overwatch',
    lastLogin: ISODate
  }],
  roles: {
    'world-of-warcraft': ['player', 'pvp'],
    'starcraft': ['player', 'competitive'],
    'overwatch': ['player']
  }
}

我试图发现此用户中的每个游戏都没有在1周内登录并将其标记为无效。以下是我的基本操作。

Users.update({
  $or: Groups.find().map(group => ({
    [`roles.${group.name}`]: 'player',
    'games': {
      $elemMatch: {
        name: group.name,
        lastLogin: {
          $lt: moment().subtract(1, 'week').toDate()
        }
      }
    }
  }))
}, {
  $set: { 'games.$.status': 'inactive' }
}, {
  multi: true
});

但是,当它更新时,它只会更新数组中的单个匹配。我只是希望它为数组中的每个条目执行此操作。

有办法做到这一点吗?

0 个答案:

没有答案