Разработка базы данных MongoDB со встроенными документами - PullRequest
1 голос
/ 30 ноября 2011

У меня есть несколько тысяч строк (items), которые я хотел бы перевести.Моя структура MongoDB структурирована следующим образом:

@document = {:item => "hello", :translations => {:fr => {:name => "bonjour", 
:note => "easy"}, :es => {:name => "hola", :note => "facil"}}}

Поле: translations может содержать гораздо больше языков и свойств.Я хотел бы выполнить запросы, такие как получение всех элементов без переводов для определенного языка или получение всех элементов, имеющих «bonjour» в качестве перевода на французский язык.

Я не понимаю, как я могу это сделать.Есть ли лучший способ структурировать мою базу данных для этих целей?Я использую node.js.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Я хотел бы выполнить запросы, такие как получение всех элементов без переводов для определенного языка,

.find({ 'translations.fr': {$exists:false} })

... или получение всех элементов, имеющих 'bonjour'как перевод на французский язык.

.find({ 'translations.fr.name': "bonjour" })

Есть ли лучший способ структурировать мою базу данных для этих целей?

Я считаю, что вы правильносостав.Вам нужно будет ознакомиться с Dot Notation .

1 голос
/ 30 ноября 2011

Я бы сказал, что для вашей цели модель хороша. Вам нужна нотация монго , вы можете использовать $exists для поиска fr и точечная нотация для Bonjour -

find({ "fr.name" : "bonjour" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...