MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB филтър за търсене на текст по множество полета

Очакваното поведение не само е напълно документирано но също така намирам твърдението ви за невярно. Върху стандартна проба, която отговаря на посочените от вас условия, резултатите ще бъдат както е показано. Но първо препратката към документацията:

След това изходът за обяснение на валидна заявка:

{
    "queryPlanner" : {
       "plannerVersion" : 1,
       "namespace" : "test.mycollection",
       "indexFilterSet" : false,
       "parsedQuery" : {
           "$and" : [
               {
                   "cid" : {
                       "$eq" : 2
                   }
               },
               {
                   "uid" : {
                       "$eq" : 1
                   }
               },
               {
                   "$text" : {
                       "$search" : "cat",
                       "$language" : ""
                   }
               }
          ]
      },
      "winningPlan" : {
          "stage" : "TEXT",
          "indexPrefix" : {
               "uid" : 1,
               "cid" : 2
          },
          "indexName" : "uid_1_cid_1_content_text",
          "parsedTextQuery" : {

          }
      },
      "rejectedPlans" : [ ]
  },
  "serverInfo" : {
      "host" : "trashbox",
       "port" : 27017,
       "version" : "3.0.0",
       "gitVersion" : "a841fd6394365954886924a35076691b4d149168"
  },
  "ok" : 1
}

Така че, ако искате да издавате заявки, които имат различен модел от „съставния ключ“, който всъщност сте създали и който отговаря на правилата, които са ясно посочени, тогава вероятно също трябва да сте обърнали внимание на основната точка:

Така че във „всякаква форма“ съединение или друго, ако търсите повече от една дефиниция на текстов индекс на MongoDB, тогава не можете да направите това. Същото важи и за „геопространствените“ индекси, както и общото съображение, че извън $or израз или .sort() машината за заявки може да избира само един индекс наведнъж.

Съвременните версии трябва да докладват много специфичния ред заедно с грешката:

Така че „всички“ полета са задължителни и те „трябва да са“ точно съвпадение без използване на оператори за неравенство.

Ако няма да използвате „винаги“ другите полета като част от вашата заявка с условия за „точно съвпадение“, тогава не можете да формирате съставен индекс заедно с текстово търсене.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 5 начина да получите милисекунди от дата в MongoDB

  2. Цикъл на масив и проверка на MongoDB колекция в цикъл (Async)

  3. MongoDB:Уникален ключ във вградения документ

  4. Zip масиви с MongoDB

  5. Как да премахнете елемент от двойно вложен масив в документ на MongoDB.