2014-02-01 2 views
0

У меня нет опыта в mongodb. Есть объекты, например. книги, я мог бы хранить их какЗапрос на mongodb

{ 
    "_id" : ObjectId("52ed37cb395d461424d81d51"), 
    "book" : { 
    "@id" : "1", 
    "@date" : "2012-02-01", 
    "title" : "XML Developer's Guide", 
    "price" : "44.95", 
    "description" : "An in-depth look at creating applications with XML." 
    } 
} 
{ 
    "_id" : ObjectId("52ed37cb395d461424d81d52"), 
    "book" : { 
    "@id" : "2", 
    "@date" : "2013-10-16", 
    "author" : "Mark Colsberg", 
    "title" : "Dolor sit amet", 
    "price" : "5.95", 
    "description" : "Lorem ipsum" 
    } 
} 

или в одном файле, как

{ 
    "_id" : ObjectId("52ed1df5395d46189868ae96"), 
    "catalog" : { 
    "book" : [{ 
     "@id" : "1", 
     "@date" : "2012-02-01", 
     "title" : "XML Developer's Guide", 
     "price" : "44.95", 
     "description" : "An in-depth look at creating applications with XML." 
     }, { 
     "@id" : "2", 
     "@date" : "2013-10-16", 
     "author" : "Mark Colsberg", 
     "title" : "Dolor sit amet", 
     "price" : "5.95", 
     "description" : "Lorem ipsum" 
     }] 
    } 
} 

Какой вариант является лучшим способом хранения информации для создания поиска фацета на нем?

ответ

0

Я думаю, вам нужно хранить каждую книгу как другой документ в коллекции книг документов - используйте первый метод.

Что вы подразумеваете под «фасетным поиском»? Если вы хотите найти текст, у mongodb есть это - http://docs.mongodb.org/manual/core/index-text/

+0

С помощью поиска фасета я думаю о расширенной функции поиска, похожей на sql-запросы. Поэтому, если я храню информацию в mongodb или рациональном db, я хочу запросить их. Я не знаком с языком запросов для mongodb, но могу себе представить, что нет никакой разницы в поиске в каталоге или в коллекции книг. – user3206010

+0

Существуют некоторые различия между запросом реляционной системы и MongoDB. В таких системах, как CouchDB или MongoDB, вы можете использовать, например, Map/Reduce или в случае MongoDB структуру агрегации для запросов. –

+0

Я думаю, что ответ Horizon_Net слишком общий. Для стартера темы - если вы используете мой подход - каждая книга представляет собой отдельный документ в коллекции документов, вы можете выпускать поиск по названию книги, описанию, автору и т. Д. – vodolaz095

0

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

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

0

Для поиска фасета вы захотите использовать фактический метод FTS в настоящее время, такой как Solr/Elastic Search/Sphinx/whatever.

MongoDB в настоящее время не предназначен для гравюрного поиска.

+0

Thx для ссылок на эти инструменты. Я уже [слышал] (http://blog.mongodb.org/post/59757486344/faceted-search-with-mongodb) о них. – user3206010

Смежные вопросы