Mongoose中多重更新操作
我正在尝试使用Mongoose更新单个文档中的多个字段。
var fooSchema = new Schema({ foo: { a: [ { type: Number, ref: User, required: true } ], b: [ { type: Number, ref: User } ], c: [ { type: Number, ref: User } ], } }); foo.findByIdAndUpdate( req.params._id, { $addToSet: { "foo.a" : req.params.user_id }, $pull: { "foo.b" : req.params.user_id }, $pull: { "foo.c" : req.params.user_id } }, { safe: true }, function(e) { ... } );
foo.a
按预期更新,但不会从foo.b
删除user_id。 使用Mongoose / MongoDB在单个操作中是否可以有多个更新条件?
您需要将两个$pull
项组合到一个对象中,因为不能有两个具有相同名称的字段:
foo.findByIdAndUpdate( req.params._id, { $addToSet: { "foo.a" : req.params.user_id }, $pull: { "foo.b" : req.params.user_id, "foo.c" : req.params.user_id } }, { safe: true }, function(e) { ... } );