python mongoengine映射到现有集合

python mongoengine映射到现有集合,python,mongodb,mongoengine,Python,Mongodb,Mongoengine,我对mongo引擎非常陌生,在理解它的具体功能方面有点困难——提供的文档并不是那么直接。我已经收集了Mongo中的文档,每个文档都有特定的字段。我将这些字段映射到中的字段,这些字段根据别名派生自文档类和引用的集合 class imported_item(me.Document): _id = me.ObjectIdField(required = True) _type = me.StringField(max_length=10) _name = me.StringFi

我对mongo引擎非常陌生,在理解它的具体功能方面有点困难——提供的文档并不是那么直接。我已经收集了Mongo中的文档,每个文档都有特定的字段。我将这些字段映射到中的字段,这些字段根据别名派生自文档类和引用的集合

class imported_item(me.Document):
    _id = me.ObjectIdField(required = True)
    _type = me.StringField(max_length=10)
    _name = me.StringField(max_length=10)

def item_print(self):
    print ("************************************************")
    print self._id
    print self._type
    print self._name

    me.meta = {
        'db_alias': 'test',
        'index_background': True,
        'indexes': [(_type, 1),(_name, 1)],
        }

  def main():
     me.register_connection(alias="test", name=_database, host=_host, port=_port, username=_username, password=_password)

     print imported_item.objects({imported_item._type:'sm_tags'})
     imported_item.item_print()
现在我遇到的麻烦是: 1) Mongoengine抱怨它需要默认连接,而不是我称之为test的连接,这不是我想要的,因为我将有几个集合,我希望有几个对象类型链接到每个集合,这样我就可以并行使用它们 2) 我有一堆mongoengine.fields.StringField的对象打印出来,但没有值 3) 如果我试图用imported_item.objects.all()获取所有对象,那么它将返回一个空集

我使用的是mysql驱动程序,它更基于过程,因此我不知道DB和mongoengine之间的链接发生在什么级别,以及如何准确地访问DB中的值


提前谢谢

但是,我不确定您的示例代码是否正确缩进以查看要点

1) 您需要连接到数据库-您已经注册了一个数据库,但尚未连接到该数据库。您可以使用
get\u connection
通过别名获取连接

from mongoengine.connection import get_connection
get_connection(alias)
2) 你的打印方法看起来不错。但是,需要在类的实例上调用它-它不是静态方法-请尝试:

imported_item.objects({imported_item._type:'sm_tags'}).first().item_print()
3) 如果由于未正确设置meta而返回为空集-它应该是Document类的属性-不尝试设置
me.meta
例如:

meta = {
    'db_alias': 'test',
    'index_background': True,
    'indexes': [(_type, 1),(_name, 1)],
    }
最后,请参阅pep8,了解您的语法和符合python编码标准的情况,这些标准在社区范围内为python所接受