2016-04-23 6 views
1

Ich habe versucht, die Funktion db.runCommand() zu verwenden, nur um festzustellen, dass der Textsuchbefehl in 3.x nicht funktioniert.So führen Sie die Textsuche in Mongo 3.x mit Java durch

In dem Mongo Shell dies funktioniert gut:

collection.find({"$text": {"$search":"some text"}}) 

Die nächste Idee war natürlich dann diese einfach zu nehmen und diese auf Java zu konvertieren.

collection.find(new Document("$text", new Document("$search", "some text"))); 

Es funktioniert nicht. Es wäre toll, einen Hinweis zu erhalten, wie man die Suche in Mongo 3.x mit dem Java-Treiber angehen kann.

WRONG: Es funktioniert. Aber es gibt immer noch ein Problem mit doppelten Anführungszeichen im Literaltext.

+0

Ich habe mich anscheinend geirrt. Es funktioniert in Java. Eine literale Textsuche mit doppelten Anführungszeichen ist jedoch immer noch eine Herausforderung. Zum Beispiel Suche nach dem wörtlichen Vorkommen von Nickname: "Duke". Normalerweise müssen literale Suchen in \ "eingebettet werden \", aber was mit dem "innerhalb des Textes? – dexter

Antwort

0

Sie können den folgenden Codeblock verwenden und in MongoDB suchen.

BasicDBObject query = new BasicDBObject() 
query.put(column_name, new BasicDBObject("$regex", searchString).append("$options", "i")); 
DBCursor cursor = dbCollection.find(query); 

In dem obigen Code, replcae Spalten_Name mit der Spalte, in der Sie suchen möchten, und anstelle von searchString- den Wert hinzufügen, die Sie suchen. Und führen Sie dieses Codebeispiel aus.

Hoffe, das wird gut funktionieren.