python - MongoEngine fieldDoesNotExist错误,但实际上是

标签 python mongodb error-handling mongoengine

我有一个类:

class POI(Document):
    location = PointField(required=True)
    name = StringField(default='')
    generate_by = IntField(required=True)
    status = StringField(default='Active')
    colleсted_by = IntField()
    time_created = DateTimeField(default=datetime.datetime.now)
当我尝试插入
POI(location=[55.430212, 30.521000], generate_by=1241254, name="Sample", collected_by=None)
发生错误
mongoengine.errors.FieldDoesNotExist: The fields "{'collected_by'}" do not exist on the document "POI"
怎么了?

最佳答案

实际上,在两个“collected_by”字符串中有一个很小的错字,这使它们有所不同,由于某种原因,您在此处使用的“c”:

class POI(Document):
    location = PointField(required=True)
    name = StringField(default='')
    generate_by = IntField(required=True)
    status = StringField(default='Active')
    colleсted_by = IntField()
         ^
         |
不是常规的拉丁字母“c”,而是西里尔字母,看起来完全像拉丁字母“c”。
事实上:
  • 拉丁文“c”(https://www.codetable.net/decimal/99)
  • 西里尔字母“с”(https://www.codetable.net/decimal/1089)

  • 见下文:
    In [16]: "collected_by" == "colleсted_by"
    Out[16]: False
    
    In [17]: "с" == "c"
    Out[17]: False
    
    In [20]: ord("с"), ord("c")
    Out[20]: (1089, 99)
    
    如果您使它们相同,则代码将像 super 按钮一样工作

    关于python - MongoEngine fieldDoesNotExist错误,但实际上是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64404241/

    相关文章:

    Python 和 Django 编码风格 (PEP)

    python - 将 python pandas 数据帧发布到 slack 有哪些方法?

    python - 如何在 Python 3 中解码类似 unicode 的字符串?

    angular - 如何解决 “Can' t在自定义ErrorHandler中解决Angular 8应用程序中[…]”问题的所有参数?

    python - 从文档中选择多个值

    java - 如何使用mongodb 3.2使用范围查询

    mongodb - 我怎么知道 MongoDB 恢复何时结束

    java - 在 Spring-Boot 中,我们如何在同一个项目中连接两个数据库(Mysql 数据库和 MongoDB)?

    javascript - 如何处理加载 iframe 时的错误?

    error-handling - 如何真正使用IntersystemsCaché中的$ etrap捕获所有错误?