这是我的结构,我想给定用户ID和商品ID(Havelist中每个条目中的第一个元素-第一个条目中的5d2807a1eba04543f914d9da),更改数组中的最后一个值(第一种情况,第二种情况下为2),要么一次增加一次,要么一次减少一次。
这些字段没有名称,因此当我浏览它们时,它们被称为[0],[1],... [7](最后一个,我要编辑的字段)
{
"_id" : "david",
"havelist" : [
[
"5d2807a1eba04543f914d9da",
"aaaa",
"cccc",
null,
"bbbb",
"2",
"",
1
],
[
"5d28079eeba04543f914d62f",
"dddd",
"zzzz",
null,
"bbbb",
"3",
"",
2
],
[
"5d2807bdeba04543f914eb25",
"eeee",
"cccc",
null,
"zzzz",
"3",
"",
1
],
],
"email" : "w@w.com",
}
我尝试过
k=USERS_COLLECTION.updateOne({'$and':[{'_id':'david'},{'havelist':{'$elemMatch':{'0':"5d2807a1eba04543f914d9da"}}}]},{'$set':{'havelist.$.7':0}})
为了将0赋予值
但是没有用
答案 0 :(得分:0)
COLLECTION.find_one_and_update({'$and':[{'_id':'david'},{'havelist':{'$elemMatch':{'0':'5d2807a1eba04543f914d9da'}}}]},{'$set':{'havelist.$.7':0}})
这将成功将值更改为0。我仍在寻找有关如何将值增加或减少1的答案。