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了,查询语句中要包含所有的字段,才能正常执行。
      个人解释,有详细解释还望告知。
    即使是尽在眼前的风景,每踏出一步,都会是一个新世界。
  • 相关阅读:
    Python全栈开发之6、面向对象
    Python全栈开发之5、模块
    kvm恢复和删除快照
    virsh命令和虚拟机克隆
    Python全栈开发之4、迭代器、生成器、装饰器
    索引
    字段属性--唯一键
    安装虚拟机
    字段属性--自增长
    centos7安装kvm
  • 原文地址:https://www.cnblogs.com/blacktusz/p/11345845.html
Copyright © 2011-2022 走看看