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