使用 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'
我正在尝试通过以下代码 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'