使用 mongoengine 查询现有集合

Query a exisiting collection by using mongoengine

我正在尝试通过以下代码 access/query mongo 中的现有集合,但即使集合中有 33 个文档,我的计数也是 0!

from mongoengine import *


class TASK(DynamicDocument):
    pass

connect("try", host="mongodb://x.x.x.x:27017/")

print(task.objects().count()) 

o/p 是 0

TASK 是 try DB 中的一个集合。在mongo罗盘中可以看到33个文件!

对我做错了什么有什么建议吗?

TIA!

如评论中所述,尝试将集合名称强制设为 "TASK",如下所示:

class TASK(DynamicDocument):
    meta = {'collection': 'TASK'}

否则基础集合是 "t_a_s_k" 而不是您期望的 "TASK"。事实上,这是因为模型通常是 CamelCased(例如 JediWarrior)和 mongoengine snake_cases 模型名称以减去集合名称(例如 jedi_warrior)。请参阅下面的演示,了解如何在您的示例中在幕后命名集合:

from mongoengine import *

connect("try", host="mongodb://x.x.x.x:27017/")

class TASK(DynamicDocument):
    pass

collection = TASK._get_collection()
print(collection.name)    # 't_a_s_k'