У меня есть запрос, который выполняется, как ожидается, когда он выполняется непосредственно в MongoDB, но я столкнулся с некоторыми проблемами, пытаясь заставить его работать через MongoEngine.Почему этот запрос агрегации работает в MongoDB из командной строки, но не через MongoEngine?
РАЗВИТИЯ СРЕДЫ
- MongoDB 3.0.7
- Mongoengine 0,10
- PyMongo 3.1
- Джанго 1.8.4
исходного запроса
Этот запрос отлично работает в MongoDB при выполнении из командной строки, получая множество результатов.
db.collection.aggregate([{$project: {
"variant":1,
"version":1,
"date":1,
"quarter":{$cond:[{$lte:[{$month:"$date"},3]},
"Q1",
{$cond:[{$lte:[{$month:"$date"},6]},
"Q2",
{$cond:[{$lte:[{$month:"$date"},9]},
"Q3",
"Q4"]}]}]}}},{$group:{"_id":{"quarter":"$quarter", "year":{$year:"$date"}},
"total":{$sum:1},
"details":{$push:{
variant:"$variant",
version:"$version",
date:"$date" }}}}])
MONGOENGINE QUERY
Это моя попытка сделать его работу в MongoEngine. Он выбрасывает ошибку «элемент конвейера 1 не является объектом».
Collection.objects.aggregate([{"$project": {
"variant":1,
"version":1,
"date":1,
"quarter":{"$cond":[{"$lte":[{"$month":"$date"},3]},
"Q1",
{"$cond":[{"$lte":[{"$month":"$date"},6]},
"Q2",
{"$cond":[{"$lte":[{"$month":"$date"},9]},
"Q3",
"Q4"]}]}]}}},
{"$group":{"_id":{"quarter":"$quarter", "year":{"$year":"$date"}},
"total":{"$sum":1},
"details":{"$push":{
"variant":"$variant",
"version":"$version",
"date":"$date" }}}}])
Что я делаю неправильно?