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