Как правильно обеспечить индексное поле mongodb для индекса в многомерном массиве?

У меня есть данные в mongodb что-то вроде этого. Есть коллекция кошек. Кошки сортируются по разным категориям и оцениваются от 1 до 100. Одна кошка может находиться в 2 или более категориях. Есть тысячи категорий.

КОЛЛЕКЦИЯ: «кошки»

КЛЮЧИ:

rank.category1 = 1; // ranked 1st in category #1
rank.category2 = 13; // ranked 13th in category #2
rank.category425 = 50; // ranked 50th in category #425

ВОПРОС:
Если я хочу сделать find (), чтобы вернуть всех «кошек», которые имеют «rank» в «category2», где $ существует => «rank.category2», каков правильный способ индексировать это? Могу ли я просто поместить простой возрастающий индекс в коллекцию «rank» или мне нужен индекс для всех 1000+ ключей категории *? Есть ли лучший способ хранить эту информацию или более простой способ ее индексирования?

6

Решение

Как насчет …

rank.categories = [1, 2, 425];
rank.category = {
1 : 1,
2 : 13,
425 : 50
}

Вы можете индексировать db.collection.ensureIndex({"categories":1}), Теперь вы можете искать по категориям и получить рейтинг каждой, когда вы найдете одну.

7

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector