mongodb 3.4美元或合计

mongodb 3.4美元或合计,mongodb,aggregate,Mongodb,Aggregate,我正在努力熟悉pymongo和mongodb 这个查询非常基本,也非常简单,但我正在努力让它工作 match = { "$match": {"$or" : [{"book.author" : ".*"+name+".*"}, {"book.editor" : ".*"+name+".*"}, {"book.illustrator" : ".*"+name+".*"}]}} count = {"$count":

我正在努力熟悉pymongo和mongodb 这个查询非常基本,也非常简单,但我正在努力让它工作

match = { "$match": {"$or" : [{"book.author" : ".*"+name+".*"},
                      {"book.editor" : ".*"+name+".*"},
                     {"book.illustrator" : ".*"+name+".*"}]}}
count = {"$count": "tot"}
cur = db.collection.aggregate([match, count])
我使用的是MongoDB3.4,它提供了所有的管道阶段。
我不知道为什么它在数据存在时返回null

您的正则表达式语法错误。如果要进行通配符搜索,则需要使用like so(
$options:'i'
部分用于使搜索不区分大小写):


谢谢@dnickless。这段代码在python中正确吗?我是python的初学者。很多时候,我错误地使用了(“”),因为我阅读了mongodb教程,并且在pythonI中工作,没有运行Python环境,所以我真的不知道。你有错误吗?哪一个哪里?谢谢@dnickless我发现了我的错误。谢谢你再次帮助我,我想我忘记了一些引语。因此,请检查更新的答案。
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])