Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongoDB查询结果输出_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

mongoDB查询结果输出

mongoDB查询结果输出,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我收集了以下文件: { “_id”:ObjectId(“539c118b310c022c947b0055”), “术语”:“航空风暴之旅”, “年份”:“2015年”, “月”:“06”, “日”:“01”, “小时”:“17”, “dayofyear”:“4”, “周年”:“22”, “productcount”:0, “计数”:22 }, { “_id”:ObjectId(“558c118b310c022c947b1145”), “术语”:“航空”, “年份”:“2015年”, “月”:“0

我收集了以下文件:

{
“_id”:ObjectId(“539c118b310c022c947b0055”),
“术语”:“航空风暴之旅”,
“年份”:“2015年”,
“月”:“06”,
“日”:“01”,
“小时”:“17”,
“dayofyear”:“4”,
“周年”:“22”,
“productcount”:0,
“计数”:22
},
{
“_id”:ObjectId(“558c118b310c022c947b1145”),
“术语”:“航空”,
“年份”:“2015年”,
“月”:“06”,
“日”:“01”,
“小时”:“17”,
“dayofyear”:“4”,
“周年”:“22”,
“productcount”:0,
“计数”:21
},
{
“_id”:ObjectId(“558c992b310c022c947b0055”),
“术语”:“航空风暴之旅”,
“年份”:“2015年”,
“月”:“06”,
“日”:“01”,
“小时”:“17”,
“dayofyear”:“1”,
“周年”:“22”,
“productcount”:0,
“计数”:2
},
{
“_id”:ObjectId(“558c118b123c022c947b0055”),
“术语”:“航空风暴之旅”,
“年份”:“2014年”,
“月”:“06”,
“日”:“01”,
“小时”:“17”,
“dayofyear”:“364”,
“周年”:“22”,
“productcount”:0,
“计数”:32
},
{
“_id”:ObjectId(“558c223c310c022c947b0055”),
“术语”:“航空风暴之旅”,
“年份”:“2014年”,
“月”:“06”,
“日”:“01”,
“小时”:“17”,
“dayofyear”:“365”,
“周年”:“22”,
“productcount”:0,
“计数”:22
}
我需要根据
year
dayofyear
指定的条件计算
count
term
的总和

我的问题是:

db.tq.aggregate(
{$match:
{$or:[
{$和:[{dayofyear:{$gte:“1”,$lte:“4”},{year:“2015”}]},
{$and:[{dayofyear:{$gte:“363”,$lte:“365”},{year:“2014”}]}
]
}
},
{$group:{
_id:“$term”,
总数:{
$sum:“$count”
}
}
},
{
$sort:{totalcount:-1}
}
)
在这里,我手动指定了2015年1月4日至2014年363月365日之间的日期


但它并没有给出预期的结果。有人能指出我的查询中的错误吗?

您在一个字符串字段上使用了$gte。请查看此线程:更切题:“400”小于“8”。这就是词法字符串匹配的工作原理。您需要将它们转换为数值。同时将“日期”存储为
Date
对象。您可以使用适当的
Date
对象执行所有相同的操作,这样做所需的存储空间“大大”减少。实际上,您的查询给出了正确的结果(使用这些参数和示例数据,但不要指望它)。但是@ZeMoon已经给了你一个链接,其中有一个建议可以使用,因为它是JavaScript
parseInt
或者甚至正确地强制转换到
Date
逻辑中的对象都是您的朋友。另外,如果你想让你的老板更改数据,这里的整个团队都会帮你对付他/她:)