Je cherche à récupérer certaines données de MongoDB mais je ne suis pas sûr de la façon de le faire efficacement. Il se peut que ma structure de collection/document ne soit pas idéale et que je doive la stocker différemment. Tout conseil serait apprécié ..MongoDB - comment interroger ces données
J'ai deux collections - Les objets et vues
Objets
{
"_id" : ObjectId("4f182ac3369a2b2603010000"),
"name" : "Object name",
"project_id" : "4f182a76369a2b2903000000"
}
vues d'objet
{
"_id" : ObjectId("4f182ac3369a2b2603010000"),
"2012" : {
"r" : 8,
"t" : 16,
"u" : 10,
}
}
Je veux récupérer 2012.r de 'Ob ject views pour tous les objets appartenant à un projet particulier.
Voici mes idées sur la façon de le faire:
- avez une question de trouver qui renvoie tous les documents de la collection « objet vues » qui correspondent au champ _id. Pour moi, cela ne semble pas efficace ou une façon ordonnée de faire les choses (imaginez s'il y avait 2000 objets ).
- Ajoutez le champ project_id à tous les documents 'vues d'objet', puis effectuez une requête de recherche pour sélectionner tous les documents correspondant à l'ID du projet. Est-il mal vu/efficace de sélectionner plusieurs documents (il pourrait y avoir aussi peu que 2 ou autant que 2000)?
- Créer une collection spécifiquement pour ce problème. Il contiendrait un document pour chaque projet, où chaque document spécifie toutes les instances d'objets appartenant à ce projet et les valeurs de 2012.r. Faites ensuite une requête de recherche pour sélectionner le document unique.
Des idées, des conseils ou des solutions de rechange seraient appréciés!
Assez facile, merci! Comme vous le dites, en supposant qu'il y ait un index dessus, recommanderiez-vous de stocker project_id en ObjectId ou en string? – RichW
J'utiliserais le même type que dans Object.project_id – milan