select 具有最小值 $Min 的单个文档 mongodb

select single document with minimum value $Min mongodb

为了 select 包含数据库中最小值的单个特定文档,我做了很多努力。

       let Lowestdate = await BTCMongo.aggregate(
        [ 

          // { "$sort": { "name": 1, 
          {
            $match : { "createdAt"  : { $gte: new Date(last),$lte: new Date(NEW) } } },
          
             {

            $group:
            {
              _id:null,
              minFee_doc:{$min: "$$ROOT"},
              minFee: { $min:{$toDouble:"$one"}},
              firstFee: { $first: "$one" },
              lastFee: { $last: "$one" },
              maxFee: { $max: {$toDouble:"$one"}},
              
            }
          },
        ]
       ).then(result => {}):

with minFee_doc:{$min: "$$ROOT"}, 我一直在尝试 return 包含最少 $min 的文档,但它保持 returning 包含 $first[=17 的文档=]

如何select获得最小值的文档?

注意:我想 return 整个文档,包括“CreatedAt”、“UpdatedAt”和 _id。包含最小值的文档

预期结果应如下所示:

{
        "minFee_doc": {
            "_id": "61e84c9f622642463640e05c",
            "createdAt": "2022-01-19T17:38:39.034Z",
            "updatedAt": "2022-04-24T14:48:38.100Z",
            "__v": 0,
            "one": 2
        },
        "minFee": 2,
        "firstFee": 3,
        "lastFee": 5,
        "maxFee": 6
    }

编辑:也提供单个文档而不是多个

$push $group 中的所有文档然后 $set 包含 $filter

的数组
db.collection.aggregate([
  {
    $match: {}
  },
  {
    $group: {
      _id: null,
      minFee_doc: { $push: "$$ROOT" },
      minFee: { $min: { $toDouble: "$one" } },
      firstFee: { $first: "$one" },
      lastFee: { $last: "$one" },
      maxFee: { $max: { $toDouble: "$one" } }
    }
  },
  {
    $set: {
      minFee_doc: {
        $filter: {
          input: "$minFee_doc",
          as: "m",
          cond: { "$eq": [ "$$m.one", "$minFee" ] }
        }
      }
    }
  }
])

mongoplayground