2015-09-23 17 views
6

Mam następujące zapytanieMongoDB wyszukiwania tekstu nie zwraca wynik

db.Profiles.find({ "$text" : { "$search" : "vk" } }) 

Daje mi następujący wynik

{ 
    "_id" : ObjectId("55e999a5bd1f3926586799bb"), 
    "created" : ISODate("2015-09-04T13:16:21.555Z"), 
    "userId" : 4790, 
    "email" : "[email protected]", 
    "firstName" : "", 
    "lastName" : "", 
    "phoneNumber" : "", 
    "isUnsubscribed" : false, 
    "isAboveLimit" : true, 
    "status" : 0, 
    "userAgent" : 0, 
    "isDeleted" : false, 
    "p2l" : [ 
     { 
      "listId" : 31613, 
      "status" : 25, 
      "subscriptionDate" : ISODate("2015-09-17T14:04:33.660Z") 
     } 
    ], 
    "countryId" : 0, 
    "cf" : [] 
} 

Ale po nie

db.Profiles.find({ "$text" : { "$search" : "v" }}) 

There nie są wynikami.

Odpowiedz

4

Od the documentation:

Operator $text mecze na kompletnej wynikała słowo. Jeśli więc pole dokumentu zawiera słowo borówka amerykańska, wyszukiwanie terminu blue nie będzie zgodne. Jednak jagoda lub borówki będą pasować.

Jeśli chcesz znaleźć rekordy, które zawierają v w dziedzinie email można zrobić $regex meczu:

db.Profiles.find({ "email" : { "$regex" : /v/ } }) 
+0

Regex nie jest odpowiedni dla mnie, bo to doen't indeksuje użytku –

+2

@ MongoUser101 Czy masz źródło tego stwierdzenia? http://docs.mongodb.org/v3.0/reference/operator/query/regex/#index-use stwierdza inaczej, bardzo. –

Powiązane problemy