ドキュメントにdate
フィールドがあり、最初と最後に出現するドキュメントを集計で取得したいとします。$group
および$min
またはを使用すると$max
、日付自体を簡単に取得できます。例:
db.mycollection.aggregate([
{ $group: {
_id: 1, // for the example say I'm grouping them all ...
first: { $min: "$date" },
result: { $push: { ... } } // ... and returning them all
}}
])
これにより、次のような結果が返されます。
{ _id: 1, first: ISODate(...), result: [...] }
しかし、私が欲しいのは最初のデートではなく、最初のデートの結果です。パイプラインを使用してこれをどのように取得しますか?
後で配列をスキャンして、日付が一致するオブジェクトを探していましたが、これは機能するようですが、不適切なオブジェクトに遭遇する前に、これを行う適切な$project
方法があるかどうかを確認したいと思いました。 。