如何在pymongo中使用$和$ match查询?

时间:2014-04-08 07:45:04

标签: python mongodb aggregation-framework pymongo

我的查询现在是

events = mdb.events.aggregate([
        {"$match": {"type": "ClientService"}},
        {"$project": {"value": 1, "day": {"$dayOfYear": "$timestamp"}, "count": {"$add": [1]}}},
        {"$group": {"_id": {"day": "$day", "value": "$value"}, "count": {"$sum": "$count"}}},
        {"$sort": {"day": -1, "value": 1}}
    ])

如何修改此查询以使用$ match query中的“$ and”语句通过多个参数查找文档?

1 个答案:

答案 0 :(得分:0)

来自MongoDB文档。

  

MongoDB在指定逗号分隔的表达式列表时提供隐式AND操作。当必须在多个表达式中指定相同的字段或运算符时,必须使用带有$和运算符的显式AND。

无论如何,' $和'的语法在聚合中保持不变 即。

{ $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }

所以你的查询看起来像

events = mdb.events.aggregate([
    {"$match": {"$and" : [{"type": "ClientService"},{"some_key":"value"}]}},
    {"$project": {"value": 1, "day": {"$dayOfYear": "$timestamp"}, "count": {"$add": [1]}}},
    {"$group": {"_id": {"day": "$day", "value": "$value"}, "count": {"$sum": "$count"}}},
    {"$sort": {"day": -1, "value": 1}}
])

$or$not$ne等同样如此。