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) { ... } );