2012-04-12 2 views
0

Je viens juste de commencer avec mongo et python et je suis coincé sur l'obtention de cette requête afin de fonctionner correctement:et Mongo regexp

#get a database 
db = connection.test 

#get a colleciton 
family = db.family 

#get all names that begin with E 
namesWithE = family.find({'name' : 'E/^'}) 
print nameWithE.count() 

Je sais qu'il ya deux enregistrements qui correspondent à cette requête, mais je continue à avoir une compter de 0

Répondre

2
namesWithE = family.find({name : {$regex : 'E.*'}}) 

-> cela fonctionne pour moi

+0

J'ai essayé sans luc k aussi bien. – PruitIgoe

+0

a modifié ma réponse. – asenovm

+0

qui a fonctionné! J'ai dû le changer légèrement, family.find ({name: {'$ regex': 'E. *'}}) (voir les guillemets autour de $ regex mais à part ça ça a bien fonctionné) – PruitIgoe

0

Vous pouvez aussi le faire directement par

namesWithE = family.find({'name' : /^E.*/}) 

MongoDB prend l'argument comme expression régulière si elle est écrite entre / et vous pouvez également ajouter des options comme la casse après l'expression comme celui-ci

namesWithE = family.find({'name' : /^E.*/i}) 

Maintenant, cette expression renvoie tous les documents de la collection qui ont nom terrain et leur valeur de départ soit e ou e