Как я могу получить минимальное / максимальное значение подмассива в MongoDB? - PullRequest
1 голос
/ 24 мая 2011

Итак, у меня есть ситуация, когда я помечаю документы с помощью массива, например:

tags: [
   'Housing' : 10,
   'Retail'  : 1,
   'Stocks'  : 25,
]

Я просто сохранял сами теги, но недавно добавил цифры, потому что мне нужно знать ранг/позиция.Таким образом, число рядом с тегом обозначает ранг документа в наборе документов, помеченных этим тегом.

В некоторых местах становится сложно, но сейчас я просто пытаюсь понять, какЯ добавляю другой документ с одним или несколькими из этих тегов.Допустим, я создаю новый документ и отмечаю его как Housing.Его ранг должен быть установлен на 11, но откуда мне это знать?

Единственное решение, которое мне удалось найти до сих пор, - это составить карту / уменьшить, чтобы просмотреть записи и найти максимумзначение для этого тега, добавить один и сохранить.Теперь большинство записей, вероятно, будет иметь только 2-3 тега, но теоретически возможно иметь 10-15.В любом случае, похоже, что map / lower потребует огромных усилий, если будет много тегов и много записей ...

Есть ли более простой способ, или я должен просто начать искать другое решение этой проблемы?проблема?

Редактировать:

Позвольте мне рассказать вам немного подробнее о проблеме, которую я пытаюсь решить ... Я показываю изображения в слайд-шоу/ карусели.Слайд-шоу охватывает различные категории, поэтому, используя категорию / теги, приведенные выше, вы можете просматривать ВСЕ изображения или только изображения из раздела «Жилье», «Розничная торговля», «Акции» и т. Д. Сейчас у меня есть только несколько определенных категорий, но это довольноВозможно, что они будут расширяться с течением времени.Они должны быть отфильтрованы по тегу и отсортированы по дате (сначала самое новое).

Теперь, до этого момента я занимался именно этим.Проблема возникает, когда я хочу выбрать произвольное изображение в середине колоды.Скажем, вы хотите загрузить "housing_chart.gif", который был загружен 6 месяцев назад.Я не хочу загружать 6-месячные изображения для того, чтобы добраться до этого изображения (что я и делаю сейчас).Вместо этого я хочу загрузить это конкретное изображение, а затем иметь возможность разбивать его на страницы для следующих / предыдущих изображений.

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

1 Ответ

2 голосов
/ 25 мая 2011

Зачем тебе ранг?Это когда-нибудь обновлялось?Если нет, и если рейтинг постоянно увеличивается, не могли бы вы просто отсортировать документы по определенному тегу по дате?

Я бы сказал, что информация о ранге действительно принадлежит «тегу», а не документу, т.е.С каждым тегом должен быть связан список документов с этим тегом - позиция в этом списке может затем определять список.

...