我正在尝试通过此更新查询来更新store = 465,AisleName = 59并将AisleSort = 34设置为以下代码
db.getCollection('products').update({'AvailableOnStores.AisleName': { '$eq': '59' }, 'AvailableOnStores.StoreNumber': { '$eq': '465' } }, { '$set': { 'AvailableOnStores.$.AisleSort': 34 } } )
然后它在465商店中更新为34,但该商店中没有该AisleName。我们在商店423中拥有该过道名称。我无法逐元素检查,因为我正在从json文件中检查所有这些信息,其中每个商店都包含sort和AisleName。
{
"ProductCode" : "6786777",
"AvailableOnStores" : [
{
"StoreNumber" : "465",
"Price" : "19",
"AisleSort" : 9,
"AisleName" : "Checkout Lane",
"AisleLocations" : [
{
"bayNumber" : 6,
"description" : "Checkout Lane",
}
]
},
{
"StoreNumber" : "423",
"Price" : "1",
"AisleSort" : 5,
"AisleName" : "59",
"AisleLocations" : [
{
"description" : " Aisle 59",
},
{
"description" : "Aisle 25",
},
{
"description" : "Aisle 4",
}
]
}
],
"NotAvailableOnStores" : [],
"IsPricingVaries" : false
}
答案 0 :(得分:0)
如果您要更新同时满足这两个条件的文档,则应像这样修改查询
db.getCollection('products').update(
{
'AvailableOnStores':{
$elemMatch:{'AisleName':{ '$eq': '59' },'StoreNumber':{ '$eq': '465' }}}
},
{
'$set': {'AvailableOnStores.$.AisleSort': 34 }
}
)
作为参考,请阅读mongodb $elemMatch上的本文档,并告诉我是否需要更多帮助