キーがまだ存在しない場合は、コレクションにレコードを追加します。 [MongoDB] [1]がこのためにupsert
を提供しているので、
_db.collection.update({"_id":"key1"},{"_id":"key1"},True)
_
これはうまくいくようです。
ただし、 Pymongo documentation では、更新は非推奨であり、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
_が異なるのか、なぜ_$
_演算子を使用する必要があるのかはよくわかりません。誰でも助けることができますか?
replace_one()
の代わりにupdate_one()
を使用します。 replace_one()
の3番目のパラメーターもupsert
です。
_db.collection.replace_one({"_id": "key1"}, {"_id": "key1"}, True)
_
私個人の意見では、このupdate_one()
の実装はMongoDBクライアントの動作と矛盾しています。 update_one()
のupsert
オプションは実際には無意味です。しかし、pyMongoの開発者は、これを使用してupdate_one()
とreplace_one()
を区別したい場合があります。