mongoengine 如何使用 xxx[yyy].object()的形式获取数据?

2016-01-03 16:13:17 +08:00
 billion

当我们使用 pymongo 的时候,可以使用下面的方式连接到 example 数据库中的名叫 col 的集合中:

conn = pymongo.MongoClient()
db = conn.example
collection = db.col

当然也可以使用如下的代码,他们的作用是完全一样的。

dbname = 'example'
collectionName = 'col'
conn = pymongo.MongoClient()
db = conn[dbname]
connection = db[collectionName]

但是现在我使用 mongoengine, 假设我在数据库中有一个集合叫做 collectionA, 然后在 model.py 文件中有这样一个类:

class collectionA(Document):
    A=StringField()
    B= StringField()

所以我就可以使用

import model
x = model.collectionA.object(A='xxx')

来查询数据

由于有很多的集合,所以我希望是用

model[collectionName].object(A='xxx ')

来查询数据,但是我发现 mongoengin 似乎不支持这种方式.

所以我想请问一下是不是我的用法不对,以及应该如何修改。我确实不想写几十个 if - elif 。感谢!

2341 次点击
所在节点    Python
2 条回复
janxin
2016-01-03 19:18:30 +08:00
是不支持的
Drifter
2016-01-03 20:06:05 +08:00
Of course, this is not support.

为什么要定义 Document ,就是为了将数据库中的 collection 与 python 中定义的 class 映射。
而 pymongo 可以是因为直接将 collection 取出来作了[{}]这样的基本数据结构。

你当然需要定义好你这边的 document ,才能让 mongoengine 找到映射的 collection ,再转成对应的 document 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/247971

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX