使用 Pymongo 更新具有匹配 id 和数组元素之一的单个数组项
Update single array item with matching id and one of the array element using Pymongo
使用 Pymongo 更新具有匹配 ID 和数组元素之一的单个数组项
使用 array_filters 尝试了几个 Pymongo 命令(不确定这是否仅适用于 1 个数组级深度)但看起来没有任何更新,即使没有报告错误但更新没有发生。
更新以下内容的正确 Pymongo 命令是什么?
{
"_id" : ObjectId("9f1a5aa4217d695e4fe56be1"),
"array1" : [
{
"user" : "testUser1",
"age" : 30,
}
],
}
new_age_number = 32
mongo.db.myCollection.update_one({"_id": id}, {"$set": {"array1.$[i].age": new_age_number}}, array_filters=[{"i.user":"testUser1"}],upsert=False)
update_db = mongo.db.myCollection.update({"_id": id, "array1[index].user":"testUser1"}, {"$set": {"item_list[index].age": new_age_number}}, upsert=False)
mongo.db.myCollection.save(update_db)
*index 是for循环的数字
在此处查看文档:https://docs.mongodb.com/manual/reference/operator/update/positional/#update-documents-in-an-array
特别注意:
Important
You must include the array field as part of the query document.
因此,如果您想更新数组中的第一项:
oid = ObjectId("9f1a5aa4217d695e4fe56be1")
db.mycollection.update_one({'_id': oid, 'array1.user': 'testUser1' }, {'$set': {'array1.$.age': 32}})
如果要更新数组中的特定项目:
oid = ObjectId("9f1a5aa4217d695e4fe56be1")
db.mycollection.update_one({'_id': oid, 'array1': {'$elemMatch': { 'user': 'testUser1' }}}, {'$set': {'array1.$.age': 32}})
使用 Pymongo 更新具有匹配 ID 和数组元素之一的单个数组项
使用 array_filters 尝试了几个 Pymongo 命令(不确定这是否仅适用于 1 个数组级深度)但看起来没有任何更新,即使没有报告错误但更新没有发生。
更新以下内容的正确 Pymongo 命令是什么?
{
"_id" : ObjectId("9f1a5aa4217d695e4fe56be1"),
"array1" : [
{
"user" : "testUser1",
"age" : 30,
}
],
}
new_age_number = 32
mongo.db.myCollection.update_one({"_id": id}, {"$set": {"array1.$[i].age": new_age_number}}, array_filters=[{"i.user":"testUser1"}],upsert=False)
update_db = mongo.db.myCollection.update({"_id": id, "array1[index].user":"testUser1"}, {"$set": {"item_list[index].age": new_age_number}}, upsert=False)
mongo.db.myCollection.save(update_db)
*index 是for循环的数字
在此处查看文档:https://docs.mongodb.com/manual/reference/operator/update/positional/#update-documents-in-an-array
特别注意:
Important
You must include the array field as part of the query document.
因此,如果您想更新数组中的第一项:
oid = ObjectId("9f1a5aa4217d695e4fe56be1")
db.mycollection.update_one({'_id': oid, 'array1.user': 'testUser1' }, {'$set': {'array1.$.age': 32}})
如果要更新数组中的特定项目:
oid = ObjectId("9f1a5aa4217d695e4fe56be1")
db.mycollection.update_one({'_id': oid, 'array1': {'$elemMatch': { 'user': 'testUser1' }}}, {'$set': {'array1.$.age': 32}})