2015-10-19 2 views
1

У меня есть ниже структурамногоуровневая вложенная структура массива в MongoDB

{ 
    "_id": { 
     "$oid": "55ae24016fb73f6ac7c2d640" 
    }, 
    "Name": "some name", 
    "District": "some district", 
    "Stories": [ 
     { 
      "userId": "105304831528398207103", 
      "story": "some story", 
      "Likes": ["user id 1" ..... ], 
      "_id": { 
       "$oid": "55c055af1875b0002572cf94" 
      } 
     } 
    ] 
} 

Так что в этом требовании там будет много историй, и идент идентификатор автора, который его разместил. И есть столбец под названием Likes, и я добавлю идентификатор пользователя, которому нравится история. И я удаляю их id из массива Likes, когда они в отличие от него.

Что является лучшей моделью для этого требования? или эта модель отлично подходит для хранения понравившихся?

Можно ли использовать вложенные массивы в mongodb?

ответ

1

Да, это может быть хорошим подходом для вас. Вложенные массивы подходят для использования, возможно, это лучшее решение для вас в этом случае, чтобы встраивать подобные в истории. Таким образом, когда вы запрашиваете историю, вы получите также все, что нравится (очень быстро). Недостатком является то, что будет сложнее запросить конкретное «подобное», не имея «похожих» коллекций. Запросить все понравившиеся пользователи будет сложнее.

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

.. 
"Stories": [ 
    { 
     "userId": "105304831528398207103", 
     "story": "some story", 
     "Likes": [ 
       {user_id :"user id 1", user_name: "user name"}, 
       ..... 
      ], 
     "_id": { 
      "$oid": "55c055af1875b0002572cf94" 
     } 
    } 
] 
.. 
Смежные вопросы