【问题标题】:Pymongo3.6 check_keys not doing it's jobPymongo3.6 check_keys 没有做它的工作
【发布时间】:2020-02-08 16:51:30
【问题描述】:

我在 mongo 中的键中需要点。所以,在插入时我发送'check_keys = False'。这适用于 pymongo3.4。但是我最近更新到 pymongo3.6,即使我发送 check_keys=False,我也会收到 InvalidDocument 错误。有没有办法解决这个问题?

db['test'].insert([{'a.b': 'asd'}], check_keys=False}

请同时使用 Pymongo3.6 和 Pymongo3.4 试试这个

【问题讨论】:

    标签: mongodb python-2.7 pymongo


    【解决方案1】:

    使用insert_one 方法代替insert 已弃用,并提供bypass_document_validation=True 参数。

    【讨论】:

    • 你的 MongoDB 版本是多少?
    • db['test_col'].insert_one({'asd.s':'asdqd'}, bypass_document_validation=True) packages/pymongo/pool.py",第 649 行,在 _raise_connection_failure 中引发错误 InvalidDocument : key 'asd.s' 不能包含 '.'
    【解决方案2】:

    我也有类似的问题,我发现update_one 似乎不关心点(.),所以我正在考虑先创建一个空对象,用insert_one,然后添加稍后使用update_one 将内容传递给它,这样就绕过了该限制。不是最干净的解决方案,但可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 2017-08-26
      • 2018-10-06
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多