Bạn nên tạo một chỉ mục văn bản trên các trường bạn muốn tìm kiếm:
db.deals.ensureIndex({ name: "text", description : "text", category : "text" });
Từ tài liệu của toán tử $ text:
$ text thực hiện tìm kiếm văn bản trên nội dung của các trường được lập chỉ mục với chỉ mục văn bản.
Chỉ mục bạn đã tạo cho ba trường của mình là chỉ mục kết hợp, không phải chỉ mục văn bản. Chỉ mục văn bản sẽ giống như sau:
{
"v" : 1,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "name_text_description_text_category_text",
"ns" : "test.deals",
"weights" : {
"category" : 1,
"description" : 1,
"name" : 1
},
"default_language" : "english",
"language_override" : "language",
"textIndexVersion" : 2
}