9
votes

Comment fonctionne les "critères" mongoïdes?

J'essaie de faire quelque chose de droit comme: xxx

ceci renvoie une instance de mongoïde :: critère

Que Puis-je faire avec ce critère? Et si je veux juste que le tableau des documents soit renvoyé pour une évaluation ultérieure?


1 commentaires

Donc, Tout à ActiveRecord renvoie un tableau. Vous souhaitez appeler exécuter pour obtenir le tableau. utilisateur.Où (project_id: 2) .Execute


3 Réponses :


3
votes

critères est quelque chose comme relatissement objet dans activeCord

Vous pouvez l'utiliser de cette manière xxx < / pré>

Ceci retournera [] s'il n'y a aucun utilisateur xxx


3 commentaires

S'il n'y a pas d'utilisateurs correspondant à ce critère, lorsque je exécute PETS User.Name, je récupère le critère lui-même. Y a-t-il de toute façon pour éviter cela?


S'il y a maintenant des utilisateurs met l'utilisateur.name ne sera jamais exécuté


users.all ne renvoie pas de tableau. Il renvoie un autre critère et n'est généralement pas nécessaire. Pour obtenir un tableau des critères, utilisez .Oa_a



20
votes

En Mongoïde, les critères représentent la requête, pas les éléments. Vous pouvez penser à un critère sous forme de filtre, d'une portée, d'un objet de requête.

Une fois que vous avez un critère (portée), vous pouvez obtenir les éléments, exécuter une requête réelle à la base de données, avec une méthode supposée itérer sur les éléments ou renvoyer un élément, par exemple: .First , .Last , .to_a , . CODE>. >, .map , etc.

Ceci est plus efficace et vous permet de composer une "requête" complexe à d'autres simples.

Par exemple, Vous pouvez créer des scopes nommés dans votre classe: xxx

alors vous pouvez créer des objets de critères: xxx

jusqu'à Ce point, vous n'avez déclenché aucune requête à la base de données Mongo, vous n'avez que composer des requêtes.

à tout moment, vous pouvez garder des critères de chaînage, pour affiner la requête même En outre: xxx

et enfin, obtenez le tableau avec les éléments suivants: xxx

donc, définissez certaines étendues nommées dans le Classe, puis utilisez-les pour créer un critère et faire le re Al requête quand vous en avez besoin (chargement paresseux). Les critères traitent tout cela pour vous, même si vous ne saviez pas que vous en aviez besoin.


0 commentaires

3
votes

Pour obtenir un tableau d'un mongoïde :: Critère: Utilisez la méthode .To_a


0 commentaires