mongoengine如何通过使用列表中的包含查询?

时间:2012-10-11 01:04:41

标签: mongodb pymongo mongoengine

如果我的集合中包含类似于下面的列表字段。

class Post(Document):
   tags = ListField(StringField())

假设我有一个贴有标签的帖子:有趣,有趣。

如果我想搜索标签符合任何搜索字词的帖子,我该怎么做?

如果我将搜索词放在“有趣”和“奇妙”中,则上面的帖子应该在结果集中。

我试图通读documentation,但似乎没有这样的运营商。 “all”和“in”相似但不能执行我想要的。

谢谢!

干杯, 克里斯

1 个答案:

答案 0 :(得分:5)

这实际上只是一个简单的查询,例如:

class Post(Document):
    tags = ListField(StringField())

>>> Post.drop_collection()
>>> Post(tags=["hello", "world"]).save()
>>> Post(tags=["cat", "dog"]).save()

>>> Post.objects(tags__in=['hello', 'cat']).count()
... 2

这相当于找到hellotags的所有文档。 In会搜索“' in'中的任何项目。数组匹配和all是所有项匹配的位置 - 或者换句话说是完全匹配。