私はnode.jsを使ってmongodbを操作しています。私のクエリは、私が望む結果を与えるが、私はそれを並べ替えるようにしようとするにしても、それを並べ替えることはできない。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、年と深さですが、私がそれらを単独で試しても組み合わせても何も起こりませんsを結果に追加します。
何か間違っていますか?
ありがとうございます。
あなたのコレクションのサンプルドキュメントを投稿する –