代码之家  ›  专栏  ›  技术社区  ›  pa1

使用mongoengine查询现有集合

  •  0
  • pa1  · 技术社区  · 5 年前

    我试图通过以下代码访问/查询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

    任务是try DB中的一个集合。有33个文件可以在mongo compass中看到!

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

    蒂娅!

    0 回复  |  直到 5 年前
        1
  •  1
  •   bagerard    5 年前

    如评论中所述,尝试强制集合名称为“任务”,如下所示:

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

    否则,底层集合是“t_a_s_k”,而不是您预期的“任务”。事实上,这源于这样一个事实:通常模型都是骆驼壳(例如绝地武士),而mongoengine snake_用模型名来减去集合名(例如绝地武士)。请参阅下面的演示,了解在您的示例中,该系列是如何命名为幕后的:

    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'