Запрос существующей коллекции с помощью mongoengine - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь получить доступ / запросить существующую коллекцию в понедельник go с помощью следующего кода, но я получаю счет 0, хотя в коллекции 33 документа!

from mongoengine import *


class TASK(DynamicDocument):
    pass

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

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

o / p is 0

TASK - это коллекция в базе данных try. Имеет 33 документа, которые можно увидеть в пн go компас!

Любой совет, что я делаю не так?

TIA!

1 Ответ

1 голос
/ 01 апреля 2020

Как упомянуто в комментарии, попробуйте принудительно ввести имя коллекции «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'
...