MongoDB. Урок 5. Получение и сортировка данных


Internal Server Error

Error 500

This could be due to one of the following reasons:

.htaccess file was misconfigured

Permissions for the file requested on site were misconfigured

PHP or CGI code was misconfigured in the file that is requested on site

Site resources are approaching their maximum limits

Please contact the server administrator webmaster@coderlessons.com and provide the following information:

The time the error occurred

The actions you took prior to and immediately following the error. This will help the administrator better understand what may have caused the error. Please refer to the server error log for more information.

Сортировка вложенных документов в MongoDB?

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

  1. <
  2. «firstname»: «Vasya»,
  3. «lastname»: «Pupkin»,
  4. «created»: 1300125070,
  5. «ban»: 0,
  6. «posts»: <
  7. <
  8. «title»: «Hello!»,
  9. «post»: «post post post»,
  10. «created»: 1300125370,
  11. «hash»: «523343633a2fac703e84a3c6afcb3a8a»,
  12. «client_ip»: «127.0.0.1»
  13. >,
  14. <
  15. «title»: «Hello again!»,
  16. «post»: «post post post»,
  17. «created»: 1300125870,
  18. «hash»: «523343633a2fac703e84a3c6afcb3a8a»,
  19. «client_ip»: «127.0.0.1»
  20. >
  21. >
  22. >

Собственно, основной вопрос с сортировками, как можно из всех записей всех пользователей выбрать последний post по posts.created? Как отсортировать документы по вложенным полям? В документации не нашел внятного ответа. Казалось бы, всё красиво и удобно, но сортировки обламывают подобную структуру.

Топ-пост этого месяца:  Как скрыть хлебные крошки в OpenCart

Подскажите, кто имел опыт с MongoDB, как решаются подобные вещи?

  • Вопрос задан более трёх лет назад
  • 4537 просмотров

должно работать, если я вас правильно понял

такой сортировкой вы выберите пользователя, у которого в постах есть пост с самым большим значением created.

Сортировка внутри массива должна осуществлятся через map-reduse, но в текущей реализации монго еще не поддерживает работу с вложенными массивами в map-reduse, поэтому вам необходимо сортировать это уже на стороне логики.

К слову, я обычно в таком виде храню только необходимую meta информацию (типа идентификатора, даты), а сами посты — отдельными объектами. Это конечно вызывает трудности с синхронизацией, но при таком размазывании данных никаких проблем с сложными выборками

В тестовой коллекции 5 документов с разными датами в posts. Выполняю:

Курс по MongoDB

Курс по MongoDB

MongoDB является одним из нескольких типов баз данных, которые появились в середине 2000-х годов под баннером NoSQL. Вместо использования таблиц и строк, как в реляционных базах данных, MongoDB построен на архитектуре коллекций и документов. Документы содержат наборы пар ключ-значение и являются базовой единицей данных в MongoDB. Коллекции содержат наборы документов и функции в качестве эквивалента реляционных таблиц базы данных.

В данном курсе мы рассмотрим базовые навыки, которые вам пригодятся при работе с MongoDB, а также несколько консольных комманд, которые позволять вам проверять содержимое базы данных.

Сортировка данных

Нужно провести сортировку списка пользователей (таблица users) по количеству сообщений (таблица posts), а также по сумме рейтинга ( win + lose, сортируется отдельно ). Примерная структура таблиц:

users:

posts

Как можно реализовать такую сортировку ?

2 ответа 2

В sql данная задача тривиальна:


Для mongoDB все страшнее. Есть такая утилита SlamData (http://slamdata.com/). Она позволяет транслировать sql-выражения в запросы mongoDB

Топ-пост этого месяца:  Следить за отзывами о компании теперь можно из Яндекс.Вебмастера

Например, для вашей задачи SQL придется слегка изменить:

Необходимо объединить таблицу users с таблицей posts, при этом использовать группировку по таблицу posts с подчетом (т.е. count(*)). И отсортировать по полю количества записей. Так бы сделал в SQL.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками сортировка mongodb php или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.7.35374

MongoDB. Урок 5. Получение и сортировка данных

Данный курс посвящен такой технологии как mongodb.

MongoDB — база данных, которая может работать в приложениях, написанных на платформе nodejs.

В данном курсе мы рассмотрим базовые навыки, которые вам потребуются для изучения данной технологии — мы рассмотрим, как установить MongoDB на компьютер и запускать ее как фоновый сервис в системе, для того, чтобы она была доступна.

Также мы рассмотрим несколько консольных команд, которые позволять вам проверять содержимое базы данных.

В курсе мы рассмотрим инструмент mongoose, который удобно позволяет работать с схемами и моделями в рамках mongodb.

Урок 0. Курс по MongoDB. Введение. База данных на платформе nodejs (node.js)

MongoDB. Урок 1. Установка MongoDB

От автора: в данном уроке мы разберем, как установить mongodb на компьютер и настроить систему так, чтобы она работала как сервис в операционной системе.

В этом уроке вы узнаете, как установить базу данных MongoDB локально на ваш компьютер.

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

MongoDB. Урок 2. Подключение к базе

От автора: в данном уроке мы разберем, как на платформе nodejs подключиться к базе данных mongodb.

Топ-пост этого месяца:  Настройка и оформление группы в Facebook - грамотно и красиво

В данном уроке вы узнаете, как на платформе Nodejs можно подключиться в базе данных Mongodb.

В результате урока вы узнаете, что такое инструмент mongoose и как его правильно настроить.

MongoDB. Урок 3. Создание схемы

От автора: в данном уроке мы разберем, как создавать схемы, используя mongoose, которые впоследствии позволят нам работать с базой.

В данном уроке вы узнаете, как создавать схемы используя инструмент mongoose. Схемы в дальнейшем будут использоваться в качестве объектов для создания моделей для работы с базой данных.

В результате урока вы узнаете, как мы можем создавать схемы, какие настройки и валидаторы имеются в них.

MongoDB. Урок 4. Сохранение модели

От автора: в данном уроке вы узнаете, как на основе созданной схемы создавать модель объекта базы данных и сохранять ее.

В данном уроке вы узнаете, как на основе созданной схемы создать модель для работы с базой данных.

В результате урока мы создадим модель person, которую сохраним в mongodb.

MongoDB. Урок 5. Получение и сортировка данных

От автора: в данном уроке мы разберем как мы можем получать данные из mongodb, сортировать их и выполнять различные условия при запросе.

В данном уроке вы узнаете, как с помощью объекта модели мы сможем получить данные из mongodb.

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

MongoDB. Урок 6. Удаление модели

От автора: в данном уроке вы узнаете, как мы можем удалять нужные модели из базы mongodb.
В данном уроке вы узнаете каким образом вы можете удалять нужные данные из mongodb.
В результате урока мы удалим дубликат модели, который уже записан в коллекции.

Добавить комментарий