Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
 Аватар для webphp
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327

Mongodb как правильно хранит данные

26.03.2014, 12:30. Показов 5291. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят подскажите начинающему.
Начал изучение node js, поставил mongodb и mongoose
При проектировании веб приложения придется столкнутся с такой ситуацией:
Есть коллекция, например users, в ней 20 или даже 30 полей, вобщем большая она
id, username, password, ava и так далее
И есть еще одна коллекция в которой так же храню определенную информацию о пользователе, например users_info, где тоже много полей, а так же есть поле user которое принадлежит коллекции users.id

Как хранить такие данные? В смысле распределять как я и описал выше или же в случае с mongodb их можно и стоит хранить в одной таблице?Или же вобще можно как то завести определенное поле в users.dop_pole и складывать туда массив данных?

При случае с двумя таблицами, как их можно склеить? или сначала придется выбрать данные из из первой таблицы, ну к пример по username
JavaScript
1
2
3
4
5
6
app.get('/users:username', function(reg, res, next) {
    User.findOne({username: reg.params.username}, function(err, user) {
        if(err) return next(err);
            res.json(user);
    })
});
Затем сделать следующую выборку по коллекции users_info с условием где user.get('id') будет = users_info.user
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.03.2014, 12:30
Ответы с готовыми решениями:

Mongodb, Mongoid как ускорить запись данных в Mongodb
Добрый вечер всем! Мне нужно записать в Mongodb 2.000.000 рядов информации, по очереди, один за одним, перед записью програма проверяет...

как реализовать аутентификацию на mongodb используя gem devise (mongodb + Rails + devise)
как реализовать аутентификацию в mongodb используя gem devise? в роутах у меня есть devise_for :user; когда пишу в rake routes, то...

Флешка не хранит данные
кидаю файлы на флешку прихожу домой втыкаю в комп половина информации нет, или пустые папки что делать

1
 Аватар для ALGORE
6 / 6 / 5
Регистрация: 21.03.2014
Сообщений: 18
27.03.2014, 16:03
Про моделирование данных [eng]: http://docs.mongodb.org/manual... roduction/

Как хранить данные?
Коротко из mongo доков:
Все зависит от приложения: какая структура документов и как документы взаимосвязаны. Модель данных может быть представлена вложенными документами и ссылками на другие документы.

Модель вложенных документов = "денормализованная" модель:
Кликните здесь для просмотра всего текста

Вложенная модель хранит связанную информацию в одной записи базы данных => меньшее количество запросов (можно получить данные одним запросом) и обновлений для завершения общих операций.
Используется:
-- Модель один-к-одному - имеются взаимосвязи между сущностями:
Кликните здесь для просмотра всего текста

user
JavaScript
1
2
3
4
{
   _id: "joe",
   name: "Joe Bookreader"
}
address
JavaScript
1
2
3
4
5
6
7
{
   patron_id: "joe",
   street: "123 Fake Street",
   city: "Faketon",
   state: "MA",
   zip: 12345
}
Вкладываем:
user
JavaScript
1
2
3
4
5
6
7
8
9
10
{
   _id: "joe",
   name: "Joe Bookreader",
   address: {
              street: "123 Fake Street",
              city: "Faketon",
              state: "MA",
              zip: 12345
            }
}

-- Модель один-к-многим - взаимосвязь одного документа с множеством дочерних документов:
Кликните здесь для просмотра всего текста

user
JavaScript
1
2
3
4
{
   _id: "joe",
   name: "Joe Bookreader"
}
address
JavaScript
1
2
3
4
5
6
7
{
   patron_id: "joe",
   street: "123 Fake Street",
   city: "Faketon",
   state: "MA",
   zip: 12345
}
address
JavaScript
1
2
3
4
5
6
7
{
   patron_id: "joe",
   street: "1 Some Other Street",
   city: "Boston",
   state: "MA",
   zip: 12345
}
Вкладываем:
user
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
   _id: "joe",
   name: "Joe Bookreader",
   addresses: [
                {
                  street: "123 Fake Street",
                  city: "Faketon",
                  state: "MA",
                  zip: 12345
                },
                {
                  street: "1 Some Other Street",
                  city: "Boston",
                  state: "MA",
                  zip: 12345
                }
              ]
 }


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

Модель ссылочных документов = "нормализованная" модель:
Кликните здесь для просмотра всего текста

Ссылочная модель хранит отношения между данными с помощью ссылок от одного документа к другому. Приложение может разрешать ссылки для доступа к связанным данным.

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

Плюсы: более гибкая модель.
Минусы: из-за отсутствия JOIN-ов приложение должно разрешить ссылки на связанные данные.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.03.2014, 16:03
Помогаю со студенческими работами здесь

Си хранит данные со стеком...
Не могу разобраться, начинаю разбираться с Си (после ассемблера).Написал простенький код, но вижу что компилятор кладет данные снизу, где...

Где хранит свои данные vector?
class A { class B{...} vector<B> vec; foo1() { vec.emplace_back(B()); }

Как записать в массив данные из *.TXT и и правильно рассортировать данные по ячейкам массива?
файл index.php <?php $site = (file('text.txt')); в файле text.txt находится: xxxxxx.ru xxxxx.com xxxx.org xxxx.ru...

В какой системной таблицы Sql Server хранит данные о пользователе?
Нужно при авторизации пользователя определить, в какой он роли находится. Нашла таблицу sys.sysusers, но там только ID и роль, но нет...

Какой из перечисленных носителей информации не хранит данные без питания?
нужна помощь с ответом Какой вариант правильный? сам гуглил и написанно очень запутано, есть сомнения


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru