mongodb를 사용하기 위해 node.js를 사용하고 있습니다. 내 쿼리를 통해 원하는 결과를 얻을 수 있지만 정렬 할 때 어떤 식 으로든 정렬 할 수는 없습니다. (연도 별, 다음 깊이) 나는이 같은 결과를 좋아했을MongoDB with node.js, 그룹 집계를 정렬하는 방법을 알 수 없습니다.
{ _id: { year: 2015, depth: 17.5 }, average: 7.809660041265659 }
{ _id: { year: 2015, depth: 16.5 }, average: 7.849712114661603 }
{ _id: { year: 2016, depth: 17.5 }, average: 7.402677186121112 }
{ _id: { year: 2016, depth: 16.5 }, average: 7.565136208888859 }
:
을 여기 내가이 결과를 얻을이에서 쿼리var query = function (db, callback) {
var cursor = db.collection('collection').aggregate({
$match: {
"startdatetime": {
$gte: new Date([fromDate]),
$lte: new Date([toDate])
}
}
},
{$match: {"depth": {$gte: depthFrom, $lte: depthTo}}},
{$unwind: "$dives"}, {$match: {"depth": {$gte: depthFrom, $lte: depthTo}}},
{
$group: {
_id: {year: {$year: "$startdatetime"},depth: "depth"},
average: {$avg: "$"+[parameter]}
}
}, {$sort: {year: 1,depth:1}});
cursor.each(function (err, doc) {
assert.equal(err, null);
if (doc != null) {
console.log(doc);
} else {
callback();
}
})
};
의 예
{ _id: { year: 2015, depth: 16.5 }, average: 7.849712114661603 }
{ _id: { year: 2015, depth: 17.5 }, average: 7.809660041265659 }
{ _id: { year: 2016, depth: 16.5 }, average: 7.565136208888859 }
{ _id: { year: 2016, depth: 17.5 }, average: 7.402677186121112 }
나는 _id : 1, 년 및 깊이로 정렬하려고했으나 아무리 혼자서 시도해도 조합해서 사용해도 아무 일도 일어나지 않습니다. 결과에.
내가 잘못 했나요?
미리 감사드립니다.
컬렉션의 샘플 문서 –