Мне нужен совет по дизайну схемы MongoDB для базы данных на естественном языке.MongoDB Schema Design для базы данных языков
Мне нужно хранить для каждого текста языка и слов, как:
lang: {
_id: "English",
texts : [
{ text : "This is a first text",
date : Date("2011-09-19T04:00:10.112Z"),
tag : "test1"
},
{ text : "Second One",
date : Date("2011-09-19T04:00:10.112Z"),
tag : "test2"
}
],
words : [
{
word : "This",
},
{
word : "is",
},
{
word : "a",
},
{
word : "first",
},
{
word : "text",
},
{
word : "second",
},
{
word : "one",
}
]
}
И тогда мне нужно знать каждое слово и тексты пользователя связан. Сумма слова/текста имеет огромное значение, и мне нужно перечислить все слова на языке и все слова, которые пользователь связал для этого языка.
С моей точки зрения, я думаю, хранение user_ids, которые связаны с данным словом в массиве для слова может быть хороший подход, как:
lang: {
_id: "English",
texts : [
...
],
words : [
{
word : "This",
users: [user1,user2,user3]
},
{
word : "is",
users: [user1,user2]
},
...
]
}
Имея в виду, что слово может быть связано с сотнями из тысяч пользователей и предельного документа (как я читал) является 4MB и что мне нужно:
- Список всех слов для данного пользователя и языка
Это хороший подход? Или вы можете подумать о лучшем?
Надежда этот вопрос достаточно ясно, и что кто-то может дать мне справку по этому вопросу;)
Спасибо всем!
это означает, что если вы нужно, чтобы слово «это» ассоциировалось с user1 и user2, вам нужно будет иметь документы на сборке слов правильно? – jribeiro
Да, правильно, я имел в виду абсолютно плоскую структуру, поэтому, если у user1 и user2 у каждого есть «это» и «это», тогда у вас будет 4 документа в коллекции. – McGarnagle
Я вижу. Поэтому, если я правильно понимаю, чтобы избежать ограничения этих документов и принимая во внимание, что у пользователя будет тысяча слов, у меня могут быть пользователи, тексты и сборники слов, а также документы, представленные, как вы говорите выше. Правильно? – jribeiro