MongoDB:选择性地在选择器的一个属性上进行upsert,而不是另一个属性

时间:2015-11-04 15:49:41

标签: javascript mongodb meteor

以下是用例:我的用户看起来如下。

{
  _id: ObjectId(<someid>),
  roles: [
    { group: 'ascension', roles: ['delete', 'moderate'] },
    { group: 'fake', roles: ['view'] }
  }
}

我想尝试通过_id找到用户并添加到特定群组中的角色。

addUsersToRoles(user, role, group=this.GLOBAL_GROUP) {
  // ... not incredibly important details.
  Users.upsert({
    _id: userId,
    'roles.group': group
  }, {
    $addToSet: {
      'roles.$.roles': {
        $each: [role]
      }
    }
  })
}

这是一种捕捉

  • 如果userId不存在,则会创建一个新用户。
  • 如果用户存在该ID,但不属于该组,我想创建该组,然后推送到角色。

在MongoDB中有什么方法吗?

0 个答案:

没有答案