如標題,在執行數據更新時,如果存在數據,則更新文檔,不存在,則插入這個新文檔。
本人在python3.6.3下使用pymongo 3.7.2進行操作。
q_filter= {"_id": “id”}
collection.update_one(q_filter, {"$set": mydict}, upsert= True)
{ } does not contain shard key for pattern { InletID: 1.0, _id: 1.0 }
說是沒有包含這個shard key這個鬼東西。網上解釋的很多,沒有看很懂,有些說修改這個shard key,修改需要將集合導出,然后設置這個key,再導入就可以了。
對於小數據量可以試一試,但是我的數據太大了,沒有去試了。
后來隨意測試,把錯誤信息中報出來的字段添加到查詢語句中,也就是上面的q_filter中,然后執行就成功了,貌似是這個集合把_id和InletID共同作為shard key了,查詢語句中要包含所有的字段,才能正常執行。
個人解釋,有詳細解釋還望告知。