如何在MongoDB中的嵌套数组中更新特定对象

时间:2018-08-12 06:23:27

标签: arrays node.js mongodb schema

        "_id" : ObjectId("5b6eb947cadce31c305ac6a3"),
    "campaigns" : [
            {
                    "countries_budget" : [
                            {
                                    "AF" : "200",
                                    "GB" : "200",
                                    "CH" : "200"
                            }
                    ],
                    "_id" : ObjectId("5b6eb967cadce31c305ac6a4"),
                    "campaign_name":"xyz",
                    "budget" : "",
                    "impressions" : [
                            {
                                    "_id" : ObjectId("5b6ec05eddd5ca179855ff45"),
                                    "country" : "DC",
                                    "impression_count" : 7,
                                    "date" : ISODate("2018-08-10T19:00:00Z")

                            },
                            {
                                    "_id" : ObjectId("5b6ecfd2c4790e191c34129b"),
                                    "country" : "GB",
                                    "impression_count" : 7,
                                    "date" : ISODate("2018-08-10T19:00:00Z")

                            },
                            {
                                    "_id" : ObjectId("5b6f1db95c2cbb152c45b145"),
                                    "country" : "GB",
                                    "impression_count" : 1,
                                    "date" : ISODate("2018-08-10T19:00:00Z")

                            },
                            {
                                    "_id" : ObjectId("5b6f259d979d4216a8623b83"),
                                    "country" : "GB",
                                    "impression_count" : 1,
                                    "date" : ISODate("2018-08-10T19:00:00Z")

                            }
                    ]
            }
    ],
    "address" : "House # M335",   
    "company_details" : "s",
    "account_status" : "pending",
    "__v" : 0

}

我想做什么

如果日期是今天的日期且国家/地区匹配,我想增加印象数组内的impression_count。

否则,我想在impressions数组中创建一个具有impression_count 1的新对象

当前我正在使用此代码来增加值

setdata = {
        $inc:{
                    "campaigns.$.impressions.1.impression_count":1
                }
    }

但是问题是,这不是动态的,我必须自己指定要在印象数组中进行更新的元素编号,例如 campaigns。$。impressions.0 campaigns。$。 impressions.1 ,因此在运行时我不会知道impressions数组中的哪个对象匹配,另一方面,如果我将 $ 放在最后,mongodb不允许这样做,请帮我解决您还可以通过这个问题向我建议模式更改的问题,我可以跟踪哪个广告系列获得了多少展示次数

感谢大家

0 个答案:

没有答案