2016-10-12 3 views
0

Also habe ich eine Datenbank in MongoDB eingerichtet und die meisten Dokumente enthalten einen speziellen Code, der mit einem * beginnen und mit einem # enden kann. Wenn ich die folgende Abfrage in der MongoDb-Befehlszeile verwende, funktioniert es gut, aber wenn ich versuche, es in einem Python-Skript zu verwenden, funktioniert es nicht.PyMongo .find() Sonderzeichen

Ich denke, das Problem liegt mit der # in der Abfrage, aber wenn ich es in "" wickeln ", funktioniert es nicht.

Bitte beachten Sie, dass ich '' um $ und und den ersten Ausdruck zu stimmen, weil Syntaxfehler auftreten, wenn ich versuche, es auszuführen.

Dank

+0

können Sie nur Probe Ihrer Dokumente geben. –

Antwort

0

Wenn Sie einen regulären Ausdruck Abfrage verwenden, dann müssen Sie eine Python regulären Ausdruck Objekt erstellen. Beachten Sie, dass in diesem Fall die Zeichenfolge nicht von // umgeben sein sollte.

import re 
cursor = collect.find({'$and':[{"key":re.compile('.*\*.*')},{"key":re.compile('.*\#.*')}]}) 

Alternativ können Sie den $regex Operator

cursor = collect.find({'$and':[{"key": {"$regex": '.*\*.*'}},{"key": {"$regex": '.*\#.*'}}]}) 
+0

Ok, vielen Dank für Ihre Hilfe! – Dunny