How to query mongoengine by using contains in list?

mongodb, mongoengine, pymongo

Solution

This is actually just a simple query eg:

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

What this equates to is find any documents that have `hello` in `tags`. In would go a search where any of the items in the 'in' array match and `all` is where all items match - or in other words an exact match.

Problem

If I have a collection with a list field similar to the below. ``` class Post(Document): tags = ListField(StringField()) ``` Let's say I have a post with the tags: interesting, funny. And if I want to search for posts with tags fulfill any of the search terms, how should I do? Say if I put in the search terms "interesting" and "fantastic", the above post should be there in the result set. I tried to read through documentation but seems like there is no such operator. "all" and "in" are similar but can't perform what I want.

Original source