Как правильно выполнить контекстный поиск по парам ключ-значение NoSQL? - PullRequest
3 голосов
/ 21 января 2012

С MySQL я мог бы искать в таблице «фото», ища подходящие названия следующим образом:

SELECT *
FROM photos
WHERE title LIKE '[string]%';

Если поле «заголовок» проиндексировано, это будет работать достаточно эффективно. Я мог бы даже установить индекс FULLTEXT в поле заголовка, чтобы выполнить сопоставление подстроки.

Какова хорошая стратегия для выполнения подобного поиска по таблице фотографий NoSQL, такой как Amazon DynamoDB, в формате:

{key} -> photo_id, {value} -> {photo_id = 2332532532235, title = 'это заголовок'}

Полагаю, одним из способов будет поиск содержимого значения каждой записи и возврат совпадений. Но это кажется довольно неэффективным, особенно когда набор данных становится очень большим.

Заранее спасибо.

1 Ответ

1 голос
/ 21 января 2012

Я могу привести пример оболочки Mongo.

Из базового учебника на сайте MongoDB:

j = { name : "mongo" };
t = { x : 3 };
db.things.save(j);
db.things.save(t);

Итак, теперь у вас есть коллекция, называемая вещами, и вы сохранили в ней два документа.

Предположим, что теперь вы хотите сделать эквивалент

SELECT * FROM things WHERE name like 'mon%'

В SQL это вернуло бы вам запись "mongo".

В Mongo Shell выможет сделать это:

db.things.find({name:{$regex:'mon'}}).forEach(printjson);

Возвращает документ "Монго".

Надеюсь, это поможет.

Атиш

...