#python #mongodb #pymongo
Вопрос:
Я пытался обновить свои таблицы MongoDB с помощью _id с помощью updateMany. Я не смог найти способ или команду в документальном фильме MongoDB, который я хочу обновить. Я использую python для управления данными.
Вот мои записи:
Tbl = {
"_id": {
"$oid": "001"
},
"name": "Alisha",
"age": 24,
"userid": 378824346,
"salary": 30000
},
{
"_id": {
"$oid": "002"
},
"name": "Lana",
"age": 22,
"userid": 378824347,
"salary": 20000
},
{
"_id": {
"$oid": "003"
},
"name": "Ivan",
"age": 26,
"userid": 378824348,
"salary": 40000
},
{
"_id": {
"$oid": "004"
},
"name": "Yuri",
"age": 25,
"userid": 378824349,
"salary": 34000
}
Я хочу обновить сразу три записи с помощью updateMany(). Моя попытка выглядит следующим образом:
Tbl.updateMany({
'_id': {
'$in': ["001",
"002",
"003"]
}
}, {
'$set': [{'age': 25, 'salary': 35000},
{'age': 23, 'salary': 25000},
{'age': 27, 'salary': 45000}]
})
Я хотел бы знать, могу ли я обновить многие записи в MongoDB подобным образом. Заранее благодарю вас за потраченное время.
Комментарии:
1. это массовое обновление, это невозможно с помощью одного
updateMany()
запроса, вы можете использовать bulkWrite() .
Ответ №1:
UpdateMany не будет работать для нескольких заданных запросов. Для этого потребуется только один набор запросов для нескольких документов. Либо используйте цикл с одним запросом updateOne, либо, если вы хотите сделать это в одном запросе, используйте bulkWrite https://docs.mongodb.com/manual/reference/method/db.collection.bulkWrite/
Tbl.bulkWrite([
{
updateOne : {
"filter" : { "_id" : ""001"" },
"update" : { $set : {'age': 25, 'salary': 35000}
} } },
{
updateOne : {
"filter" : { "_id" : ""002"" },
"update" : { $set : {'age': 23, 'salary': 25000}
} } },
])
Комментарии:
1. Какой была бы команда, если бы я выполнил ее в python3? Спасибо.
2. pymongo.readthedocs.io/en/stable/api/pymongo/bulk.html Это может помочь
Ответ №2:
Следующая правильная команда
Tbl.bulkWrite([pymongo.UpdateOne(
{ "name" : "Alisha" }, { "$set" : {'age': 25, 'salary': 35000}}),
pymongo.UpdateOne(
{ "name" : "Ivan" }, { "$set" : {'age': 23, 'salary': 25000}})])