2011-12-13 3 views
0

Je suis en train de créer une requête dans Mongo qui est similaire à ce qui suit dans SQL:requête dans MongoDB similaire à « où »

@issues = Issue.where("content like ?", "%#{params[:q]}%") 

Mais Mongo quand je l'utilise « où » j'obtenir tous les résultats. Quand j'utilise "trouver", je n'obtiens aucun résultat. Voici ce que je suis en cours d'exécution, ce qui ne fonctionne pas:

@issues = Issue.where({content: "/^#{params[:q]}/" }) 

Je veux juste retourner les articles correspondant aux lettres entrées dans ma requête. J'utilise MongoDB via Mongoid.

Merci!

+1

Vous devez construire une regex appropriée. Il ne fait pas de remplacement de paramètre pour vous dans ce cas. – Nat

+0

J'ai mis à jour le code pour montrer les paramètres et l'interpolation. – Scott

Répondre

0

Pouvez-vous essayer? Cela devrait fonctionner si cela fonctionne pour le premier cas

@issues = Issue.where({content: /^#{params[:q]}/ }) 
+0

Scott, essayez-le sans le remplacement des paramètres en premier. Cela semble fonctionner results = Model.find (: all,: conditions => {: field =>/^ regex/i}) – Nat

+0

Il a effectivement travaillé comme vous l'avez suggéré. Merci! – Scott

0

Regardez regular expressions dans la documentation MongoDB:

db.collection.find({ content : { $regex : '*', $options: 'i' } });

Remplacer le * avec la bonne expression régulière pour vos besoins;

Questions connexes