私はMongooseでnode.jsアプリケーションを構築しており、埋め込みドキュメントのソートに関連する問題があります。ここで私が使用したスキーマです:Mongooseクエリを使用して埋め込みドキュメントの配列を並べ替えるにはどうすればいいですか?
var locationSchema = new Schema({
lat: { type: String, required: true },
lon: { type: String, required: true },
time: { type: Date, required: true },
acc: { type: String }
})
var locationsSchema = new Schema({
userId: { type: ObjectId },
source: { type: ObjectId, required: true },
locations: [ locationSchema ]
});
私は出力に自分の時間属性でソートされた文書userLocationsに埋め込まれた場所にしたいと思います。
function locationsDescendingTimeOrder(loc1, loc2) {
return loc2.time.getTime() - loc1.time.getTime()
}
LocationsModel.findOne({ userId: theUserId }, function(err, userLocations) {
userLocations.locations.sort(locationsDescendingTimeOrder).forEach(function(location) {
console.log('location: ' + location.time);
}
});
私はマングースが提供するソートAPIについて読みましたが、それはの配列をソートするために使用することができる場合、私は把握できませんでした:私はそうのようにMongoDBからデータを取得した後、私は現在、JavaScriptで並べ替えますもしあれば、それが合理的なアプローチであり、それをこの問題にどのように適用するのかということです。誰も助けてくれますか?あなたはそれを右の方法、ゲオルクをやっている、事前と歓声で
おかげで、 ゲオルク
ありがとうございました。私はあなたが提案したアプローチを使用して終了しました - 埋め込み時に場所をソートする。私のためにうまく動作します。 – BumbleGee
これも私の問題ですが、埋め込み時に埋め込みドキュメントをどのようにソートできますか? – drinchev
私はそれを理解しました。おそらく、新しい文書を.pushまたは.unshiftで追加すると、正しく配置されます。 – drinchev