Tengo datos en mongodb algo así. Hay una colección de gatos. Los gatos se clasifican en diferentes categorías y se clasifican del 1 al 100. Un gato puede estar ubicado en 2 o más categorías. Hay miles de categorías.
COLECCIÓN : "gatos"
CLAVES :
rank.category1 = 1; // ranked 1st in category #1 rank.category2 = 13; // ranked 13th in category #2 rank.category425 = 50; // ranked 50th in category #425PREGUNTA : Si quiero hacer un find() para devolver todos los "gatos" que tienen un "rango" en "categoría2" donde $existe => "rango.categoría2", ¿cuál es la forma correcta de indexar esto? ¿Puedo simplemente poner un índice ascendente simple en la colección de "rango" o necesito un índice en las más de 1000 claves de categoría*? ¿Existe una forma mejor de almacenar esta información o una forma más sencilla de indexarla?
Qué tal si ...
rank.categories = [1, 2, 425]; rank.category = { 1 : 1, 2 : 13, 425 : 50 } Puede indexar db.collection.ensureIndex({"categories":1}) . Ahora puede buscar a través de categorías y obtener una clasificación de cada una cuando encuentre una.