首页 > 解决方案 > MongoDb 限制更新查询

问题描述

我想将付款类型 Postpaid 更改为 POSTPAID 并且我想限制该查询,为此我编写了以下查询:

db.subscribers.find({paymentType:"Postpaid"}).limit(3).forEach(
function(doc)
{db.collection.update(
{paymentType:"Postpaid"},
{$set:{paymentType:"POSTPAID"}},
db.subscribers.save(doc)
)})

它给出以下输出,但没有任何变化:

Updated 1 existing record(s) in 3ms
Updated 0 record(s) in 1ms
Updated 1 existing record(s) in 2ms
Updated 0 record(s) in 1ms
Updated 1 existing record(s) in 2ms
Updated 0 record(s) in 1ms

该查询有什么问题,有人可以帮忙吗?

标签: mongodb

解决方案


无需更新查询,只需更新值doc并将其保存到同一个集合中,

db.subscribers.find({paymentType:"Postpaid"}).limit(3).forEach(function(doc) {
    doc.paymentType = "POSTPAID";
    db.subscribers.save(doc);
});
  • 第二种选择,做更新查询
db.subscribers.find({ paymentType: "Postpaid" }).limit(3).forEach(function(doc) {
    db.subscribers.updateOne(
      { _id: doc._id },
      { $set: { paymentType: "POSTPAID" } }
    );
});

推荐阅读