Node.js 通过一次调用更改多个文档中的字段
我有一个使用mongo的node/express应用程序 我有一个名为“paymentMethods”的集合,我在其中存储包含以下内容的文档:Node.js 通过一次调用更改多个文档中的字段,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有一个使用mongo的node/express应用程序 我有一个名为“paymentMethods”的集合,我在其中存储包含以下内容的文档: { owner_id, name_on_card, card_number_last_4, isActive } 所有者在此集合中可以有多张卡 当我添加一张新卡时,我会将“isActive”设置为真,如下所示: router.route('/') .post(function( req, res ){ PaymentMe
{
owner_id,
name_on_card,
card_number_last_4,
isActive
}
所有者在此集合中可以有多张卡
当我添加一张新卡时,我会将“isActive”设置为真,如下所示:
router.route('/')
.post(function( req, res ){
PaymentMethod.findAndUpdate({owner_id:req.body.ownerId})
var paymentMethod = new PaymentMethod();
paymentMethod.owner_id = req.body.ownerId;
paymentMethod.card_number = req.body.cardNumber;
paymentMethod.name_on_card = req.body.nameOnCard;
paymentMethod.exp_date = req.body.expDate;
paymentMethod.cvv = req.body.cvv;
paymentMethod.zipcode = req.body.zipCode;
paymentMethod.active = true;
console.log('Payment information passed: ', paymentMethod);
paymentMethod.save(function(err, paymentMethod){
if(err)
res.send(err);
res.json(paymentMethod);
})
});
我想弄清楚的是,如何在同一个调用中更新所有其他匹配记录,并将其“isActive”字段设置为null或false
提前感谢大师 我认为这是不可能的。您正在尝试插入一个文档并更新其他文档。不管你在猫鼬身上发现了什么把戏,这至少是2个运算。你“可以”使用一个数值,而不是
bool
。然后,您可以通过“切换”。但是这里的问题是“创建”部分,没有这样的操作可以在单个请求中实际“创建”新的内容以及“更新其他匹配项”。您可以使用在“一个请求”中发送“多个操作”的。否则,在一个请求中就没有另外一个选项来处理这两件不同的事情,所以在一个调用中就没有办法做到这一点。我必须先进行findAndUpdate,基本上先将每个文档中的所有isActive字段设置为null。然后创建新卡。在更新哪个卡应该是活动的情况下,相同的事情?我在正确的轨道上吗?我认为这是不可能的。您正在尝试插入一个文档并更新其他文档。不管你在猫鼬身上发现了什么把戏,这至少是2个运算。你“可以”使用一个数值,而不是bool
。然后,您可以通过“切换”。但是这里的问题是“创建”部分,没有这样的操作可以在单个请求中实际“创建”新的内容以及“更新其他匹配项”。您可以使用在“一个请求”中发送“多个操作”的。否则,在一个请求中就没有另外一个选项来处理这两件不同的事情,所以在一个调用中就没有办法做到这一点。我必须先进行findAndUpdate,基本上先将每个文档中的所有isActive字段设置为null。然后创建新卡。在更新哪个卡应该是活动的情况下,相同的事情?我走对了吗?