zoukankan      html  css  js  c++  java
  • 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了,查询语句中要包含所有的字段,才能正常执行。
      个人解释,有详细解释还望告知。
    即使是尽在眼前的风景,每踏出一步,都会是一个新世界。
  • 相关阅读:
    G
    F
    E
    D
    机器学习第二次作业
    机器学习第一次作业
    机器学习作业一
    软工实践个人总结
    第11组 Beta版本演示
    第11组 Beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/blacktusz/p/11345845.html
Copyright © 2011-2022 走看看