Элемент является типом узла, как атрибуты, текст и т.д.
Я бы посоветовал хранить голоса в виде списка историй _id
для каждого пользователя. Таким образом, вы сможете узнать, за какие истории проголосовал пользователь, просто взглянув на список. Чтобы получить пользователей, проголосовавших за историю, вы можете сделать что-то вроде:
db.users.find ({stories: story_id})
где story_id
- это _id
рассматриваемой истории. Если вы создадите индекс в поле истории
, оба эти запроса будут быстрыми.
В CouchDB это очень просто. Одно представление выдает:
function(doc) {
if(doc.type == "vote") {
emit(doc.story_id, doc.user_id);
}
}
Другое представление:
function(doc) {
if(doc.type == "vote") {
emit(doc.user_id, doc.story_id);
}
}
Оба запроса выполняются очень быстро, поскольку нет соединения. Если вам действительно нужны пользовательские данные или данные истории, CouchDB поддерживает выборку нескольких документов. Также довольно быстро и является одним из способов «соединения».
Хорошо, вы указали нормализованную модель данных, как если бы вы это делали в настройке SQL.
Насколько я понимаю, вы не делаете этого в MongoDB. Вы можете хранить ссылки, но вы этого не делаете из соображений производительности в общем случае.
Я никоим образом не эксперт в области NoSQL, но почему бы вам просто не следовать своим потребностям и не сохранить user (ids ), которые проголосовали за историю в коллекции историй, и историю (идентификаторы), за которую проголосовал пользователь, в коллекции пользователей?
] [] []]. переключение мышления - это забыть о базы данных в целом. В мир взаимоотношений, в котором ты всегда должен беспокоиться о нормализации данных и вашу структуру стола. Выбрось все это. Просто расположите вашу веб-страницу. Сложите их все в сборе. А теперь посмотри на них. Твой уже 2/3. Если вы забудете представление о том, что размер базы данных имеет значение и данные не должны быть дублированы, чем ваши 3/4 там, и тебе даже не пришлось пиши любой код! Пусть ваши взгляды диктуют твои Модели. Тебе не нужно брать ваши объекты и сделать их 2 уже не в натуральную величину, как в мир отношений. Вы можете хранить объекты с фигурой.[
] [