2016-05-17 24 views
0

Ich versuche MongoDB und ich muss diese folgende SQL-Abfrage übersetzen.MongoDB begrenzen die Anzahl der gescannten Einträge

SELECT * FROM infos_cli 
     WHERE MATCH(denomination) AGAINST('cafe') 
     WHERE code_postal LIKE '34%' 

Mein Volltextindex-Definition:

db.infos_cli.createIndex(
    { "code_postal": 1, 
     "denomination": "text" 
    }, 
    {default_language: "french"}, 
    {name: "indexSerch"} 
) 

Und meine Frage in MongoDB:

db.infos_cli.find({code_postal : /34/, $text: {$search: "cafe"}}) 

Aber es funktioniert nicht. Kann mir jemand erklären, wie ich vorgehen muss?

+0

Sind Sie sicher, dass code_postal den Typ string hat? - versuchen code_postal: 34 – profesor79

+0

Hallo, code_postal: 34000 zurück 0 Ergebnis. aber code_postal: "34000" gibt ein Ergebnis zurück – Mark

+0

das ist seltsam ... könnten Sie db.infos_cli.find ({code_postal:/34 /, $ text: {$ search: "cafe"}}). Explain() - und könnten Sie ein Beispieldokument hinzufügen? – profesor79

Antwort

0

In diesem Fall bitte separaten Index für Postfeld und für die Textsuche

db.articles.createIndex({ author : 1}) //postal... in your case 

db.articles.createIndex({ 
    "denomination" : "text" 
}, { 
    default_language : "french" 
}, { 
    name : "indexSerch" 
}) 

my query

db.getCollection('articles').find({ 
    $text : { 
     $search : "coffee", 
     $language : "french" 
    } 
}).explain() 

Ergebnis zeigt, dass es TEXT Phase und IXSCAN schaffen, die gewünscht wird!

result from explain:

{ 
    "queryPlanner" : { 
     "plannerVersion" : 1, 
     "namespace" : "testCode.articles", 
     "indexFilterSet" : false, 
     "parsedQuery" : { 
      "$text" : { 
       "$search" : "coffee", 
       "$language" : "french", 
       "$caseSensitive" : false, 
       "$diacriticSensitive" : false 
      } 
     }, 
     "winningPlan" : { 
      "stage" : "TEXT", 
      "indexPrefix" : {}, 
      "indexName" : "denomination_text", 
      "parsedTextQuery" : { 
       "terms" : [ 
        "coffe" 
       ], 
       "negatedTerms" : [], 
       "phrases" : [], 
       "negatedPhrases" : [] 
      }, 
      "inputStage" : { 
       "stage" : "TEXT_MATCH", 
       "inputStage" : { 
        "stage" : "TEXT_OR", 
        "inputStage" : { 
         "stage" : "IXSCAN", 
         "keyPattern" : { 
          "_fts" : "text", 
          "_ftsx" : 1 
         }, 
         "indexName" : "denomination_text", 
         "isMultiKey" : false, 
         "isUnique" : false, 
         "isSparse" : false, 
         "isPartial" : false, 
         "indexVersion" : 1, 
         "direction" : "backward", 
         "indexBounds" : {} 
        } 
       } 
      } 
     }, 
     "rejectedPlans" : [] 
    }, 
    "serverInfo" : { 
     "host" : "gbernas3-lt", 
     "port" : 27017, 
     "version" : "3.2.0", 
     "gitVersion" : "45d947729a0315accb6d4f15a6b06be6d9c19fe7" 
    }, 
    "ok" : 1 
} 

keine Kommentare willkommen!

Verwandte Themen