programing

update_one raise ValueError를 사용하여 레코드를 뒤집는 이유는 무엇입니까?

telecom 2023. 5. 15. 21:15
반응형

update_one raise ValueError를 사용하여 레코드를 뒤집는 이유는 무엇입니까?

키가 존재하지 않는 경우 레코드를 컬렉션에 추가합니다.[MongoDB][1]에서 제공하는 기능은 다음과 같습니다.upsert이를 위해 저는 했습니다.

db.collection.update({"_id":"key1"},{"_id":"key1"},True) 

이것은 효과가 있는 것 같습니다.

그러나 Pymongo 설명서에는 업데이트가 더 이상 사용되지 않으며 다음 용도로 사용된다고 나와 있습니다.update_one().

그러나:

db.collection.update_one({"_id":"key1"},{"_id":"key1"},True)

제공:

raise ValueError('update only works with $ operators')
ValueError: update only works with $ operators

나는 왜 그런지 정말 이해할 수 없습니다.update_one다른 것이고 왜 내가 사용해야 하는지에 대한 이유.$교환입니다.누가 도와줄 수 있습니까?

업데이트 연산자를 지정하지 않았기 때문입니다.예를 들어.id값 사용:

db.collection.update_one({"_id":"key1"}, {"$set": {"id":"key1"}}, upsert=True)

Mongo 셸에서는 문서를 새 문서로 바꾸기만 하면 됩니다.

사용하다replace_one()대신에update_one()의 세 번째 매개 변수replace_one()이라upsert,너무.

db.collection.replace_one({"_id": "key1"}, {"_id": "key1"}, True) 

제 개인적인 의견은 이것의 구현입니다.update_one()MongoDB 클라이언트의 동작과 일치하지 않습니다.upsert의 옵션.update_one()사실은 의미가 없습니다.하지만 pyMongo의 개발자들은 이것을 단지 구별하기 위해 사용하기를 원할지도 모릅니다.update_one()그리고.replace_one().

언급URL : https://stackoverflow.com/questions/30605638/why-does-upsert-a-record-using-update-one-raise-valueerror

반응형