2016-10-28 7 views
0
db.collection.createIndex({"type_name":"text"}); 
db.collection.find(); 

Ausgänge:Volltext-Suche in mongodb

{ "type_id" : "10735", "type_name" : "Tycho" } 

{ "type_id" : "1550", "type_name" : "Trina" } 

{ "type_id" : "12925", "type_name" : "Tiffany" } 

{ "type_id" : "1637", "type_name" : "The Wombats" } 

{ "type_id" : "11470", "type_name" : "The Wanted" } 

Verwendung:

db.collection.find({'$text':{'$search':"The Wombats"}}) 

Ausgänge:

{ "type_id" : "1637", "type_name" : "The Wombats" } 

Verwendung:

db.collection.find({'$text':{'$search':"Wombats"}}); 

Ausgänge:

{ "type_id" : "1637", "type_name" : "The Wombats" } 

Aber wenn ich versuche:

db.collection.find({'$text':{'$search':"The"}}); 

Ausgang:

0 

ich einen anderen Ausgang erwarten, was ist falsch?

Antwort

0

Mongodb hat einige Stoppwörter für $ text operator.

Stoppwörter

Der $ Text Operator sprachspezifische Stoppwörter wie die und und auf Englisch ignoriert.

Da Sie eines der Stop-Wort in der Abfrage db.collection.find({'$text':{'$search':"The"}}) verwenden und daher keine Ergebnisse zurückgibt.

Referenzen:...

https://docs.mongodb.com/v3.2/reference/operator/query/text/#op._S_text

https://docs.mongodb.com/v3.2/reference/operator/query/text/#match-operation

+0

aber wenn ich es versuche $ regex = new MongoRegex ("/ ^". The. "^ /". "/ I"); \t \t \t $ artistNmaeRenge = array ('type_name' => $ regex); Es funktioniert – dev

+0

@dev - Ja, es sollte funktionieren, weil Sie nicht $ text-https: //docs.mongodb.com/manual/reference/operator/query/text/ verwenden und $ regex in Ihrer neuen Abfrage verwendet haben (außerdem gibt es keine Stoppwörter für $ regex, es gilt nur für $ text) –

0

Aber wenn ich versuche, bin dieses

$ regex = new MongoRegex ("/ ^" die "^ /" "/ ich");

$ artistNmaeRenge = array ('typname' => $ regex); es funktioniert