mongodb - 删除 mongo shell 上的文档

标签 mongodb shell mongodb-query

当我更新文档时,它工作得很好,但是当我删除或删除文档时,它不起作用。它正在无限循环运行。

工作正常:

db.loans.find({ _deleted: false, _completed: false, _disbursed: false, _defaulted: false }).forEach(function (myLoans) {
  print("Loan: " + myLoans._id + "User: " + myLoans.userId);
  db.loans.update({ _id: myLoans._id }, { $set: { _deleted: true } });
});

不工作:

db.loans.find({ _deleted: false, _completed: false, _disbursed: false, _defaulted: false }).forEach(function (myLoans) {
  print("Loan: " + myLoans._id + "User: " + myLoans.userId);
  db.fees.deleteOne({ _loanId: myLoans._id, _paid: false });
});

贷款对象:

db.loans.find({_id:ObjectId("5e1edd2812909d3d76f49908")}).pretty()

{
    "_id" : ObjectId("5e1edd2812909d3d76f49908"),
    "manual" : {
        "_manual" : false,
        "timestamp" : ISODate("2020-01-15T09:36:40.169Z")
    },
    "additional_fee" : 0,
    "byApp" : true,
    "emi_type" : 1,
    "_approved" : true,
    "_deleted" : false,
    "_booked" : false,
    "_disbursed" : false,
    "_completed" : false,
    "_defaulted" : false,
    "userId" : ObjectId("5b1cd3bc1a046fd13b51682f"),
    "principal" : 2000,
    "total_interest" : 112,
    "total_repayment" : 2112,
    "lender_interest_rate" : 0.03,
    "company_interest_rate" : 0.056,
    "lpf_interest_rate" : 0,
    "lender_interest_amount" : 60,
    "company_interest_amount" : 52,
    "lpf_interest_amount" : 0,
    "lender_finding_fee" : 0,
    "emi_count" : 1,
    "emi" : [
        {
            "lenderSettlement" : 0,
            "companySettlement" : 0,
            "escrowSettlement" : 0,
            "rewardOngoing" : [ ],
            "rewardCompleted" : [ ],
            "autoLend" : false,
            "_settled" : false,
            "_disbursed" : false,
            "_completed" : false,
            "_id" : ObjectId("5e1edd2812909d3d76f49909"),
            "principal" : 2000,
            "lender_amount" : 2060,
            "total_repayment" : 2112,
            "total_interest" : 112,
            "lender_interest_amount" : 60,
            "company_interest_amount" : 52,
            "lpf_addition" : 0,
            "lpf_deduction" : 0,
            "lpf_net" : 0,
            "due_date" : ISODate("2020-03-16T09:36:40.169Z")
        }
    ],
    "status" : "Approved",
    "applied_timestamp" : ISODate("2020-01-15T09:36:40.171Z"),
    "_loanId" : "f49908",
    "loan_type" : "A",
    "__v" : 0,
    "approved_timestamp" : ISODate("2020-01-15T12:49:48.699Z"),
    "fees" : ObjectId("5e1f0a6c760e31012d39cb2c"),
    "lenderId" : ObjectId("593115365b64cc1b036faaf9")
}

费用对象:

{ "_id" : ObjectId("5e1f0a6c760e31012d39cb2c"), "_paid" : false, "userId" : ObjectId("5b1cd3bc1a046fd13b51682f"), 
"amount" : 200, "description" : "Processing Fee",
"_loanId" : ObjectId("5e1edd2812909d3d76f49908"), "timestamp" : ISODate("2020-01-15T12:49:48.695Z"),
"createdAt" : ISODate("2020-01-15T12:49:48.696Z"), "updatedAt" : ISODate("2020-01-15T12:49:48.696Z"), "__v" : 0 }

最佳答案

请尝试这样

db.loans.find({ 
    $and: [
        {_deleted: false}, 
        {_completed: false}, 
        {_disbursed: false}, 
        {_defaulted: false} 
    ]
}).forEach(doc => {
    print("Loan: " + doc._id + "User: " + doc.userId);

    db.fees.deleteMany({
        _loanId: doc._id,
        _paid: false
    });
});

关于mongodb - 删除 mongo shell 上的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59879456/

相关文章:

bash - 在 Bash 中生成两个非对称文件之间的差异

c - 管道只执行一次命令

linux - 在 Linux 中获取输出的特定部分

mongodb - 如何在 mongoDB 中获取所有匹配的子数组对象

ruby-on-rails - 使用 Mongo 部署 Heroku

node.js - 项目双嵌套数组mongodb

mongodb - 使用 $toLower 或 $toUpper 更新 MongoDB 集合

mongodb - Mongoose 没有自动增加 __v

python - 如何使用 pymongo 在 mongodb 查询中实现包含 {m,n} 的正则表达式?

mongodb - 单个 MongoDB 查询聚合计数