@Dmitry221060

Как проиндексировать коллекцию по уникальным значениям?

Есть коллекция, к примеру -
[
{userID:"111111", content:"text"}, {userID:"222222", content:"text"},
{userID:"111111", content:"text"}, {userID:"111111", content:"text"},
{userID:"222222", content:"text"}, {userID:"333333", content:"text"},
{userID:"333333", content:"text"}, {userID:"111111", content:"text"}
]

Нужно отдельно проиндексировать элементы с одинаковыми userID. Т.е. в итоге будет -

[
{userID:"111111", content:"text", index:0}, {userID:"222222", content:"text", index:0},
{userID:"111111", content:"text", index:1}, {userID:"111111", content:"text", index:2},
{userID:"222222", content:"text", index:1}, {userID:"333333", content:"text", index:0},
{userID:"333333", content:"text", index:1}, {userID:"111111", content:"text", index:3}
]

Знаю, что есть функция .createIndex, но как мне составить фильтр/настроить её так, чтобы она индексировала все userID отдельно?
Можно, конечно, использовать
.createIndex({userID:"111111"})
.createIndex({userID:"222222"})
.createIndex({userID:"333333"})
Нужный результат мы получим, но в коллекции около 2000 уникальных id и делать это таким способом - не самое рациональное решение.
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
@lega
Дело в том, что мне нужно получить три случайно выбранных значения "content", для определённого userID
Значит вам нужен обычный индекс, а не уникальный.
А чтобы выбрать N рандомных доументов в монге есть спец. команда: https://stackoverflow.com/questions/24806721/mongo...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
EShein
@EShein
Shein
Чет я не пойму, какая версия mongo? Для создания индекса используется метод createIndex. В вашем случае выглядело бы так. .createIndex("userID: 1")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы