mongo does not contain shard key


  如標題,在執行數據更新時,如果存在數據,則更新文檔,不存在,則插入這個新文檔。

  本人在python3.6.3下使用pymongo 3.7.2進行操作。

q_filter= {"_id": “id”}
collection.update_one(q_filter, {"$set": mydict}, upsert= True)
  將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了,查詢語句中要包含所有的字段,才能正常執行。
  個人解釋,有詳細解釋還望告知。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM