Mongooseクエリを介して埋め込まれたドキュメントの配列を並べ替える方法は?

StackOverflow https://stackoverflow.com/questions/9349282

  •  27-10-2019
  •  | 
  •  

質問

Mongooseを使用してnode.jsアプリケーションを構築しており、組み込みドキュメントのソートに関連する問題があります。これが私が使用するスキーマです:

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 ]
});

Time属性によってソートされた文書化されたユーザーロケーションに埋め込まれた場所を出力したいと思います。私は現在、Mongodbからデータを取得した後、JavaScriptでソートを行っています。

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);
   }
});

Mongooseが提供するソートAPIについて読みましたが、埋め込みドキュメントの配列をソートするために使用できるかどうか、そしてそれが賢明なアプローチである場合、この問題に適用する方法についてはわかりませんでした。誰かがここで私を助けてくれますか?

よろしくお願いします、ジョージ

役に立ちましたか?

解決

あなたはそれを正しい方法でやっています、ジョージ。他のオプションは、そもそも埋め込まれているときに場所を並べ替えるか、より伝統的な包囲されていないルート(または最小限に埋め込まれたルートを使用して、IDなどの配列を埋め込むことができるようにしてください。別々に場所)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top