class Comment(db.EmbeddedDocument): ... visibility = db.IntField(default=0) mentions = db.ListField(db.GenericReferenceField()) class Message(db.Document): ... comments = db.ListField(db.EmbeddedDocumentField(Comment)) # I want the list of Messages that have comments that ment a particular user and they are visible (the comments): user = User.objects.get( ... ) Message.objects(__raw__={'comments': {'$elemMatch': {'visibility': 0,'mentions': {'_cls': 'User', '_ref': user.to_dbref()}}}})