Node.js Mongoose中的多重更新操作
我正在尝试使用Mongoose更新单个文档中的多个字段Node.js Mongoose中的多重更新操作,node.js,mongodb,mongoose,Node.js,Mongodb,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,
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
按预期更新,但用户id未从foo.b
中删除。
使用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) {
...
}
);
谢谢文档中是否指定了它?@JohnJohnGa它更多地是任何JavaScript对象(或者更一般地说,任何关联数组或散列)的标准限制。