2014-09-21 2 views
0

У меня есть проблема, которую я пытаюсь полнотекстовый индекс документа, который представляет собой список документов:MongoDB индексация текста массив объектов столбцов

Я сначала вставить в БД:

db.userlikes.insert({ 
    "data": [ 
    { 
     "category": "Non-profit organization", 
     "name": "Animals" 
    }, 
    { 
     "category": "Community", 
     "name": "Computers" 
    } 
    ] 
}) 

Тогда я пытаюсь чтобы создать индекс для столбца категории:

db.userlikes.ensureIndex({"data.category": "text"}) 

Но когда я пытаюсь найти я не получаю результатов:

db.userlikes.find({"data.category": "profit"}) 

Нельзя ли индексировать этот путь? Лучше всего вставить каждый документ в массив («данные») отдельно? Это было бы накладными расходами, поскольку я только хочу вставить ответы DB, полученные из API.

Пожалуйста, помогите мне.

Благодаря

ответ

1

Пожалуйста, прочтите the documentation concerning text searches.

Текст поиска работает как этот

db.userlikes.find({ $text: {$search:"profit"} }) 

, поскольку может быть только один текстовый индекс в коллекции (хотя несколько полей могут быть проиндексированы).

+0

Привет, Спасибо за ответ, я также попытался db.userlikes.find ({$ текст: {$ Поиск: «прибыль»}}), но не повезло :(Я до сих пор не получают никаких результатов – EA9

+0

Тогда вы что-то не так. Я создал коллекцию с вашими примерными данными, добавил текстовый индекс через 'db.userlikes.ensureIndex ({" data.category ":" text "})' и отправил запрос 'db.userlikes.find ({$ text: {$ search: "profit"}}) ', что дало мне ожидаемый результат. –

0

Я пробовал те же шаги EA9. И это работает для меня. Возможно, вы захотите проверить какие-либо орфографические ошибки. Вот мой вывод с помощью команд.

db.userlikes.insert({ 
... "data": [ 
...  { 
...  "category": "Non-profit organization", 
...  "name": "Animals" 
...  }, 
...  { 
...  "category": "Community", 
...  "name": "Computers" 
...  } 
... ] 
... }); 
WriteResult({ "nInserted" : 1 }) 

db.userlikes.find(); 

{ "_id" : ObjectId("541ff8dc1dca72499395cbcf"), "data" : [ { "category" : "Non-profit organization", "name" : "Animals" }, { "category" : "Community", "name" : "Computers" } ] } 


db.userlikes.ensureIndex({"data.category": "text"}) 


{ 
    "createdCollectionAutomatically" : false, 
    "numIndexesBefore" : 1, 
    "numIndexesAfter" : 2, 
    "ok" : 1 
} 


db.userlikes.find({ $text: { $search: "profit" } }); 


{ "_id" : ObjectId("541ff8dc1dca72499395cbcf"), "data" : [ { "category" : "Non-profit organization", "name" : "Animals" }, { "category" : "Community", "name" : "Computers" } ] } 
Смежные вопросы