"_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不允许这样做,请帮我解决您还可以通过这个问题向我建议模式更改的问题,我可以跟踪哪个广告系列获得了多少展示次数
感谢大家