【问题标题】:python mongoengine mapping to the existing collectionpython mongoengine 映射到现有集合
【发布时间】:2014-06-09 18:43:57
【问题描述】:

我对 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 抱怨它需要默认连接,而不是我称之为测试的那个,这不是我想要的,因为我将有几个集合,我希望有几个对象类型链接到每个集合,所以我可以使用他们并行 2)我在打印中有一堆 mongoengine.fields.StringField 的对象,但没有值 3) 如果我尝试使用imported_item.objects.all() 获取所有对象,那么它会返回一个空集。

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

提前致谢!

【问题讨论】:

    标签: python mongodb mongoengine


    【解决方案1】:

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

    1) 您需要连接到一个数据库 - 您已经注册了一个但还没有连接到它。您可以使用get_connection 通过别名获取连接。

    from mongoengine.connection import get_connection
    get_connection(alias)
    

    2) 您的打印方法看起来不错。但是,它需要在类的实例上调用 - 它不是静态方法 - 尝试:

    imported_item.objects({imported_item._type:'sm_tags'}).first().item_print()
    

    3) 如果由于您没有正确设置元数据而返回一个空集 - 它应该是 Document 类的一个属性 - 不要尝试设置 me.meta 例如:

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

    最后 - 请查看 pep8 的语法并符合 Python 社区普遍接受的 Python 编码标准。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      相关资源
      最近更新 更多