我们可以同时使用$group和$or,或者在同一个语句中使用聚合吗
query = [{'$group': { '$or': [{'_id' : "$birthYear", 'count': { '$sum': 1 }}] }}]
by_date = list(mycol.aggregate(query))
这给了我以下的错误
pymongo.errors.OperationFailure: The field '$or' must be an accumulator object
以下是我的MongoDB示例:
db.employee.insert([
{"id":"1","name": "Ricardo Carpio","age": 24, "gender": "Male", "birthYear" : "1995" , "hobby" : "Reading books"},
{"id":"2","name": "Alice Salpicao","age": 27, "gender": "Female", "birthYear" : "1992" , "hobby" : "Eating"},
{"id":"3","name": "Cardo Agustin","age": 25, "gender": "Male", "birthYear" : "1996" , "hobby" : "Jogging"},
{"id":"5","name": "Gamora Yuchi","age": 24, "gender": "Female", "birthYear" : "1995" , "hobby" : "Singing"},
{"id":"6","name": "Thanos Pink","age": 29, "gender": "Male", "birthYear" : "1990" , "hobby" : "Collecting gems"}
])
我试着用下面的语句将计数分组
db.collection.aggregate([
{
"$group": {
"_id": "$birthYear",
"count": {
"$sum": 1
}
}
}
])
这很有效
但是,我需要添加一个基于字段的条件搜索,其中hobby is Eating
使用"$or": [hobby: "Eating"]
不清楚你想做什么,但答案不会改变
因此$group可以接收2个字段
_id
,这是必需的,必须是某种常量和任何用accumulator operators计算的字段名因此
$or
不是accumaltor运算符,这意味着我们只能将其用作_id
字段的常量看起来是这样的:
这将产生以下结果:
不可能在其他顶层使用
$or
相关问题 更多 >
编程相关推荐