我正努力让自己熟悉pymongo和mongodb 这个查询是非常基本的,非常简单,但我很难让它工作
match = { "$match": {"$or" : [{"book.author" : ".*"+name+".*"},
{"book.editor" : ".*"+name+".*"},
{"book.illustrator" : ".*"+name+".*"}]}}
count = {"$count": "tot"}
cur = db.collection.aggregate([match, count])
我正在使用mongodb 3.4,它提供了所有的管道阶段。 我不知道为什么它在数据存在时返回null。
答案 0 :(得分:1)
您的正则表达式语法错误。如果您想进行通配符搜索,则需要使用regular expression operator $regex之类的($options: 'i'
部分是为了使搜索不区分大小写):
match = { "$match": {"$or" : [{"book.author" : {"$regex": name, "$options": "i"}},
{"book.editor" : {"$regex": name, "$options": "i"}},
{"book.illustrator" : {"$regex": name, "$options": "i"}}]}}
count = {"$count": "tot"}
cur = db.collection.aggregate([match, count])