Du bør oprette et tekstindeks på de felter, du vil søge i:
db.deals.ensureIndex({ name: "text", description : "text", category : "text" });
Fra dokumentationen til $text-operatøren:
$text udfører en tekstsøgning på indholdet af felterne, der er indekseret med et tekstindeks.
Det indeks, du har oprettet for dine tre felter, er et sammensat indeks, ikke et tekstindeks. Tekstindekset vil se således ud:
{
"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
}