【发布时间】:2016-02-06 18:06:14
【问题描述】:
我有一个查询在 MongoDB 中直接执行时按预期运行,但我在尝试通过 MongoEngine 使其工作时遇到了一些麻烦。
开发环境
- MongoDB 3.0.7
- Mongoengine 0.10
- Pymongo 3.1
- Django 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 查询
这是我尝试让它在 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" }}}}])
我做错了什么?
【问题讨论】:
标签: django mongodb-query pymongo aggregation-framework mongoengine