$或汇总mongodb 3.4

时间:2017-12-14 19:18:19

标签: mongodb aggregate

我正努力让自己熟悉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。

1 个答案:

答案 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])