2014-07-17 74 views
0

我对mongoengine和MongoDB一般都很陌生。我正在尝试在Flask中建立一个高级搜索页面,并填写许多字段。如何用mongoengine批量查询字段?

当按下搜索按钮时Flask将调用一个函数,该函数获取url的所有参数,本质上构成参数的Python字典。

有没有一种方法可以使用该字典动态查询mongoengine(或任何其他库)的MongoDB字段?既可以,也可以将其放入其他数据结构中?

所以,举例来说,如果namesetcolor领域分别填写,相当于SQL语句我想应该是:

SELECT * 
FROM myTable 
WHERE `name` = 'nameval' AND `set` = 'setval' AND `color` = 'colorval'; 

如果mongoengine不能做到这一点,是一个在那里有可能?

此外,我会硬编码这个,但有大约25个字段来查询,这意味着会有很多重复坐在。

+0

尝试在原pymongo做,应该比较容易,比mongoengine更快。 –

+0

您是否阅读过MongoEngine的[查询文档](http://docs.mongoengine.org/guide/querying.html)? – dirn

回答

1

是的,你可以通过,只要它们是作为kwargs例如,传递给被过滤的字典:

MyModel.objects(**myQueryDictionary) 
+0

这似乎应该工作。如果我想让它变成'name LIKE'%cool%''呢?我想要将所有的字段与'LIKE'参数进行比较。 –

+0

那么'objects'或'filter'需要一本词典 - 它的形状取决于你想要的查询 - 查看文档 - > http://docs.mongoengine.org/guide/querying.html – Ross

+0

好的。感谢你的回答。我昨天看了看,但接近一天结束,我非常疲惫。我会再试一次。 –