我有以下mongoDB文档
{
"location" : {
"language" : null,
"country" : "null",
"city" : "null",
"state" : null,
"continent" : "null",
"latitude" : "null",
"longitude" : "null"
},
"request" : [
{
"referrer" : "direct",
"url" : "http://www.google.com/"
"title" : "index page"
"currentVisit" : 1401282897
"visitedTime" : 1401282905
},
{
"referrer" : "direct",
"url" : "http://www.stackoverflow.com/",
"title" : "index page"
"currentVisit" : 1401282900
"visitedTime" : 1401282905
},
......
]
"uuid" : "109eeee0-e66a-11e3"
}
我有四个聚合查询。
首先查询:
[
{ "$match":{
"request.1": {$exists:true}
}},
{ "$match": { "request.currentVisit":{
"$gte":1401282905, "$lte": 1401282985
}}},
{ "$unwind": "$request" },
{ "$group": {
"_id": {
"url":"$request.url"
},
"count": { "$sum": 1 }
}},
{ "$sort":{ "count": -1 } }
]
第二次查询:
[
{ "$match": {
"request":{ "$size": 1 }
}},
{ "$match": { "request.currentVisit":{
"$gte":1401282905, "$lte": 1401282985
}}},
{ "$unwind": "$request" },
{ "$group": {
"_id":{
"url":"$request.url"
},
"count":{ "$sum": 1 }
}},
{ "$sort": { "count": -1} }
]
3.第三次查询:
[
{ "$match":{
"request.1": { "$exists": true }
}},
{ "$match": { "request.currentVisit":{
"$gte":1401282905, "$lte": 1401282985
}}},
{ "$group": {
"_id": "$uuid",
"count":{ "$sum": 1 }
}},
{ "$group": {
"_id": null,
"total": { "$sum":"$count" }}
}}
]
第四次质疑:
[
{ "$match":{
"request":{ "$size": 1 }
}},
{ "$match": { "request.currentVisit":{
"$gte":1401282905, "$lte": 1401282985
}}},
{ "$group": {
"_id":"$uuid",
"count":{ "$sum": 1 }
}},
{ "$group": {
"_id":null,
"total": { "$sum": "$count" }
}}
]
技术/编程 - Node.js
相同的数据库和相同的集合
首次查询只会获取request size
1
第二次查询只会获取request size
多个结果。
第三和第四个相同。
是否可以将上述四个聚合查询转换为单个查询以提高性能?