Как сделать запрос по внутренним документам? - PullRequest
1 голос
/ 01 апреля 2012

Представьте, что у меня есть такой документ:

post = {title: "a", comments: [{hour: "08:00", "text": "abc"}, {hour: "09:00", "text": "def"}]}

Теперь у меня может быть около 1000 сообщений, и у каждого есть 100 комментариев, это означает, что у нас есть около 100000 комментариев,

  • но как я могу найти, какой самый распространенный час, когда комментируется?
  • Возможно ли сохранить до 100 или 1000 комментариев, например?
  • Получить все комментарии пользователей? Я мог бы сделать массив на пользовательский документ с комментариями = [...]?
  • Я вижу, что у них нет свойства _key, но я бы хотел использовать его, возможно без реализации моей собственной системы генерации ключей?
  • Можно иметь коллекцию с комментариями и хранить их там тоже ?

Другой пример:

 article = {code: "X900123", quantity: 24, movementsHistory: [{date:20120101, quantity: 3}, {date:20120102, quantity: 5}]}

как это можно сделать, если я хочу, чтобы все движения для всех изделий, сделанных в 20120101 году, были больше 25% текущего запаса? - В mysql у меня был бы стол для статей и движений, тогда каждое движение связано со статьей. Поэтому я мог бы объединить статьи и движения и получить результаты. (обо всех статьях, а не по одной)

спасибо за помощь (:

1 Ответ

3 голосов
/ 02 апреля 2012

Хорошо, здесь много вопросов.

  1. Использовать MapReduce .
  2. 100 наиболее распространенных комментариев?Да, это возможно, используйте MapReduce.
  3. Вы можете копировать комментарии в пользовательский документ, да.Или вы можете использовать MapReduce.
  4. Нет необходимости создавать собственный генератор идентификаторов.Все официальные драйверы поддерживают создание новых ObjectIds (на клиенте, без связи с сервером).
  5. Это было бы наиболее разумным решением, потому что вы хотите рассматривать комментарии как первоклассную сущность, а не как встроенную.Вы не должны встраивать первоклассную сущность, это усложнит ситуацию.Если комментарии имеют свою собственную коллекцию, у вас больше свободы в возможных запросах, которые вы можете запустить.Вот дополнительная информация на "embed vs. link" .

Ваш второй пример, который я действительно не понял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...