MongoDB / Mongoose $ inc子文档不会修改任何内容

时间:2018-02-07 01:34:12

标签: node.js mongodb typescript mongoose nestjs

我正在尝试更新数组中的子文档。

{
    "_id" : ObjectId("5a7a017e0aa5311d9c75c86b"),
    "campaignId" : "5a7a017e0aa5311d9c75c86b",
    "subCampaigns" : [ 
        {
            "_id" : ObjectId("5a7a0eee6849f507d0499a18"),
            "name" : "test5",
            "campaignId" : ObjectId("5a7a017e0aa5311d9c75c86b"),
            "subCampaignId" : "1aKysewspn6CqNGVkv6pyL"
        }
        {
            "name" : "test8",
            "amountRaised" : 20.0,
            "campaignId" : ObjectId("5a7a017e0aa5311d9c75c86b"),
            "subCampaignId" : "5a7a153fe035de396c6f5b3c",
            "_id" : ObjectId("5a7a153fe035de396c6f5b3c")
        }
    ],
    "name" : "test8",
    "__v" : 12,
    "totalDonated" : 110.0
}

当我跑步时:

db.getCollection('campaigns').update({"_id": ObjectId("5a7a017e0aa5311d9c75c86b"), "subCampaigns.subCampaignId":"5a7a153fe035de396c6f5b3c"}, {$inc: {"subCampaigns.$.amountRaised": 10}})

在mongo控制台中,它可以更新子文档。但是当我在我的Mongoose代码中运行它时:

this.campaignModel.update(
          { campaignId: '5a7a017e0aa5311d9c75c86b', 'subCampaigns.subCampaignId': '5a7a153fe035de396c6f5b3c' },
          { $inc: { 'subCampaigns.$.amountRaised': 10}},
          (err: any, subResult: any) => {...

子文档的amountRaised字段没有递增。据我所知,他们应该是相同的电话?

如果我在更高级别运行公司:

this.campaignModel.findOneAndUpdate(
                {campaignId: object.campaignId},
                {$inc: {totalDonated: donationAmount}},
                () => {...

它工作正常,所以这必须与子文档有关? 我一天中大部分时间都在玩多个猫鼬电话,但似乎无法正确更新。

0 个答案:

没有答案