2017-01-31 2 views
0

Meine Sammlung aussieht:MongoDB Textsuche auf verschiedenen Feldern

{ _id: 1, author: "Jack London", bookName: "The Sea-Wolf" } 
{ _id: 2, author: "Alex Kershaw", bookName: "Jack London" } 

Ich möchte in der Lage zu suchen, indem Autor oder durch Bookname nur, aber MongoDB ermöglicht es Ihnen, nur 1 Textindex zu erstellen. Danke für die Hilfe.

Beispiel: Ich will nur für Autor suchen:

db.collection.find({$text:{$search:"Jack London"}})//search in 'author' field 

Oder von Booknamen nur:

db.collection.find({$text:{$search:"Jack London"}})//search in 'bookName' field 

Wenn ich Verbindung Index {author: "text", bookName: "text"} es habe uns beiden Einträge zurückgeben, was nicht ist was ich möchte.

Antwort

0

Löschen Sie den Textindex, und Sie können $regex verwenden, um die Felder abzufragen.

db.collection.find({ author: { $regex: /Jack London$/ } }) 

db.collection.find({ bookName: { $regex: /Jack London$/ } }) 
+0

Ich habe große Sammlung wird es ‚Alter‘ nimmt diese Anforderung zu verarbeiten. – Popeye

+0

Regex kann auch Index verwenden. Hast du versucht ? https://docs.mongodb.com/manual/reference/operator/query/regex/. Übrigens glaube ich nicht, dass es mit Textsuche möglich ist. – Veeram

+0

hast du ein beispiel? – Popeye

Verwandte Themen