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了,查询语句中要包含所有的字段,才能正常执行。
      个人解释,有详细解释还望告知。
    即使是尽在眼前的风景,每踏出一步,都会是一个新世界。
  • 相关阅读:
    VINTF
    Excel 公式
    SSIS ODBC方式连接mysql数据库
    SSIS错误汇总
    linux防火墙(转)
    如何查询域名的MX、A、DNS、txt、cname记录
    IP反向解析
    Visual Studio 内存泄漏检测方法
    strcpy慎用
    main函数前后执行代码
  • 原文地址:https://www.cnblogs.com/blacktusz/p/11345845.html
Copyright © 2011-2022 走看看