Можем ли мы использовать как $ group, так и $ или в одном выражении с агрегацией?
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"]