Также в случае, если кто-то задается вопросом, как отменить поиск по элементам, то есть найти запись, которая соответствует «красным» и «синим» и НЕ соответствует «зеленому» и «белому», это можно сделать с помощью $ nin оператор, который может быть неочевиден, когда кто-то читает документы $ nin (http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24nin - описание синтаксического анализа для меня было сложным):
db.my_collection.find({tags: { $all : ["red","blue"], $nin : ["green", "white" ]}})
Это очень круто, так как позволяет относительно хороший синтаксис поиска с отрицанием:
tokenRequired1 tokenRequired2 !tokenForbidden1 !tokenForbidden2
Очень естественный поиск в стиле Gmail.
Как и предполагалось здесь и здесь вы можете выполнить полнотекстовый поиск, если создадите массив всех токенов из записи, хотя я понятия не имею, является ли он эффективным или даже лучшим способ сделать это.