我可以在MongoDB的深层嵌套文档上使用findAndModify之类的工具吗?

我可以在MongoDB的深层嵌套文档上使用findAndModify之类的工具吗?,mongodb,findandmodify,Mongodb,Findandmodify,在我的MongoDB中,我收集了上下文和如下文档(a上下文有一些用户和角色) 是否有方法使用添加(或删除)用户的角色 是的,这是可能的。您可以同时使用和命令来完成 要向用户呼叫添加角色,请执行以下操作: db.contexts.update({ _id: ObjectId('53dea71a713d636e1fea705a'), 'users.userId': '53a347467f311d7c1731f91b' }, { $pull: { 'users.$.roles':

在我的MongoDB中,我收集了上下文和如下文档(a上下文有一些用户角色


是否有方法使用添加(或删除)用户的角色

是的,这是可能的。您可以同时使用和命令来完成

要向用户呼叫添加角色,请执行以下操作:

db.contexts.update({
  _id: ObjectId('53dea71a713d636e1fea705a'),
  'users.userId': '53a347467f311d7c1731f91b'
}, {
  $pull: {
    'users.$.roles': 'admin'
  }
})
db.contexts.update({
_id:ObjectId('53dea71a713d636e1fea705a'),
“users.userId”:“536d2e8be0f9697e13b95c87”
}, {
$push:{
“用户.$.roles”:“管理员”
}
})
要从用户调用中删除角色,请执行以下操作:

db.contexts.update({
  _id: ObjectId('53dea71a713d636e1fea705a'),
  'users.userId': '53a347467f311d7c1731f91b'
}, {
  $pull: {
    'users.$.roles': 'admin'
  }
})
请注意,我正在使用指定一个确切的
用户
子文档 更新

下面是为同一任务使用
find和modify
的示例:

db.contexts.findAndModify({
  query: {
    _id: ObjectId('53dea71a713d636e1fea705a'),
    'users.userId': '536d2e8be0f9697e13b95c87'
  },
  update: {
    $push: {
      'users.$.roles': 'admin'
    }
  },
  new: true
})
update
findAndModify
命令之间唯一的真正区别是
findAndModify
返回一个修改过的文档,而
update
只返回操作状态


findAndModify
操作相当于调用
find
update
操作,除了
findAndModify
在单个事务中执行这两个操作。有关更多信息,请参阅。

是的,这是可能的。您可以同时使用和命令来完成

要向用户呼叫添加角色,请执行以下操作:

db.contexts.update({
  _id: ObjectId('53dea71a713d636e1fea705a'),
  'users.userId': '53a347467f311d7c1731f91b'
}, {
  $pull: {
    'users.$.roles': 'admin'
  }
})
db.contexts.update({
_id:ObjectId('53dea71a713d636e1fea705a'),
“users.userId”:“536d2e8be0f9697e13b95c87”
}, {
$push:{
“用户.$.roles”:“管理员”
}
})
要从用户调用中删除角色,请执行以下操作:

db.contexts.update({
  _id: ObjectId('53dea71a713d636e1fea705a'),
  'users.userId': '53a347467f311d7c1731f91b'
}, {
  $pull: {
    'users.$.roles': 'admin'
  }
})
请注意,我正在使用指定一个确切的
用户
子文档 更新

下面是为同一任务使用
find和modify
的示例:

db.contexts.findAndModify({
  query: {
    _id: ObjectId('53dea71a713d636e1fea705a'),
    'users.userId': '536d2e8be0f9697e13b95c87'
  },
  update: {
    $push: {
      'users.$.roles': 'admin'
    }
  },
  new: true
})
update
findAndModify
命令之间唯一的真正区别是
findAndModify
返回一个修改过的文档,而
update
只返回操作状态

findAndModify
操作相当于调用
find
update
操作,除了
findAndModify
在单个事务中执行这两个操作。有关更多信息,请参阅