1

MongoDB ObjectIDの配列を比較、並べ替え、フィルタリングなどしたり、配列に基づいてドキュメントを並べ替えたりしようとしています。私の主な質問は次のとおりです。使用するObjectID.equals()必要がありますか、それともすべてを文字列に変換し、のようなネイティブ比較を使用indexOfして、元に戻すことができますか?それは重要ですか?

私の特定のユースケース:ユーザーは投稿をリストに保存できます。これをObjectIDの配列として保存しますuser.saves。最初の25件の投稿を順番に取得したいので、クエリを実行します{_id: {$in: user.saves.slice(0, 25)}}。取得したドキュメントをどのように並べ替えますか?

4

2 に答える 2

2

解決:

db.collection.find({
  $or: [{
    _id: _id1
  }, {
    _id: _id2
  }]
}, callback)
于 2012-12-02T00:50:59.033 に答える
-5

MongodbのObjectIdの目的は、ドキュメントを一意に識別することです。確かに文字列に変換しないことで、ソート操作に使用する必要はありません。

作成した時間でソートされたドキュメントのリストを取得するだけの場合。created_at(タイムスタンプ)フィールドを追加する必要があります。これを使用して、必要なときにドキュメントを並べ替えることができます。

余分なフィールドを追加したくない場合。ObjectIdにはタイムスタンプコンポーネントが含まれているため、これを抽出して並べ替えに使用できます。ただし、一般的な方法は、フィールドを追加することです。

于 2012-08-07T08:02:10.193 に答える