当我们使用 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 。感谢!
1
janxin 2016-01-03 19:18:30 +08:00
是不支持的
|
2
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 。 |