Данные: у меня есть 3 документа mongodb, два из них содержат '04'.
Он отлично работает с оболочкой mongo, но не тогда, когда я пишу его с помощью python ...
Давайтесм. мои документы, и регулярное выражение находит результаты, как и ожидалось:
MongoDB shell version: 3.2.11
connecting to: 192.168.79.2/test
> db.virtuel.find({},{_id:0 , d:1})
{ "d" : "0409" }
{ "d" : "0204" }
{ "d" : "0710" }
> db.virtuel.find({ d: { $regex: '^\([0-9][0-9]\)*\(04\)\([0-9][0-9]\)*$' } }).count()
2
НО: когда я хочу закодировать то же самое в python:
import pymongo
myclient = pymongo.MongoClient("mongodb://192.168.79.2:27017/")
mydb = myclient["test"]
mycol = mydb["virtuel"]
regex_pd='^\([0-9][0-9]\)*\(04\)\([0-9][0-9]\)*$'
myquery={}
myquery['d'] = {
u'$regex': regex_pd }
dataset = mycol.find(myquery)
print("Number of elements : " + str(dataset.count()))
mydb.close()
Это возвращает 0 вместо 2, как ожидалось... Конечно, я допустил ошибку, но с какой?