La récupération de tableau d'id dans Mongoid
comment récupérer un tableau de IDs
dans Mongoid
?
arr=["id1","id2"]
User.where(:id=>arr)
Vous pouvez le faire facilement si vous récupérez un autre attribut
User.where(:nickname.in=>["kk","ll"])
Mais je me demande comment ce faire de mongoid -> cela devrait être très simple et l'exploitation commune
Vous devez vous connecter pour publier un commentaire.
Rappelez-vous que l'ID est stocké comme
:_id
et pas:id
. Il y a unid
méthode d'aide, mais quand vous faites des requêtes, vous devez utiliser:_id
:Souvent je trouve très utile pour obtenir une liste d'id de faire des requêtes complexes, donc je fais quelque chose comme:
.distinct(:_id)
au lieu de.map(&:_id)
.distinct
œuvres lors de l'exécution de la requête qui est légèrement plus rapide que de dire rails de la boucle de la matriceOu tout simplement:
Mongoid.raise_not_found_error = false
permettra d'éviter document non trouvé erreur sur la requête ci-dessusLa méthode ci-dessus, proposé par browsersenior ne semble pas fonctionner, au moins pour moi. Ce que je fais, c'est:
for_ids
au lieu deid
comme suit:User.criteria.for_ids(arr)
La solution ci-dessus fonctionne très bien lorsque le nombre d'utilisateurs est faible. Mais il faudra beaucoup de mémoire alors qu'il y a des milliers d'utilisateurs.
permettra de créer une liste d'objets Utilisateur à néant dans chaque champ, à l'exception de l'id.
La solution (pour mongoid 2.5):