Вопрос:

Ошибка типа: update () отсутствует 1 обязательный позиционный аргумент: «документ»

python-3.x mongodb

11 просмотра

2 ответа

1 Репутация автора

Я попытался связать как атрибут сравнения, так и атрибут $ set в одной переменной и отрисовал для обновления функции в mongodb. Но это дает мне ошибку ниже

Ошибка типа: update () отсутствует 1 обязательный позиционный аргумент: «документ»

Python 3 MongoDB

from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017/")
db = client.Mydb
collection = db.sampledb
new_contact = "6369723748"
updatestmt = "{\"ID\" : \"12345\"},{\"$set\" :{\"ID\" : \"67891\",\"Account_Number\" : \"1234 5678 9101\"}}"
print(updatestmt)

cursor = collection.update(updatestmt)
cursor1 = collection.find()

for i in cursor1:
    print(i)

Ожидаемый результат:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Фактический результат:

Traceback (последний вызов был последним):

Файл "dbupdate.py", строка 12, в

курсор = collection.update (updatestmt)

Ошибка типа: update () отсутствует 1 обязательный позиционный аргумент: «документ»

Автор: Sudharsan M Источник Размещён: 11.08.2019 07:44

Ответы (2)


0 плюса

6715 Репутация автора

pymongoработает со словарями, а не со строками. Вы передаете одну строку

Следовательно используйте:

query = {"ID" : "12345"}
new_values = {"$set" : {"ID" : "67891", "Account_Number" : "1234 5678 9101"}}

cursor = collection.update(query, new_values)

Или, чтобы соответствовать вашему синтаксису:

updatestmt = ({"ID" : "12345"}, {"$set" : {"ID" : "67891", "Account_Number" : "1234 5678 9101"}})
cursor = collection.update(*updatestmt)

Кстати: updateтеперь заменено на update_one(для ваших нужд) или update_many(если запрос может соответствовать нескольким записям)

Автор: Derlin Размещён: 11.08.2019 07:50

0 плюса

348 Репутация автора

update()устарела, и вы должны действительно использовать update_one () .

cursor = collection.update({'ID' : '12345'}, {'$set' : {'ID' : '67891', 'Account_Number' : '1234 5678 9101'}})
Автор: Šimon Kocúrek Размещён: 11.08.2019 07:51
Вопросы из категории :
32x32