【问题标题】:How to filter with date in mongodb如何在mongodb中过滤日期
【发布时间】:2022-01-16 02:31:01
【问题描述】:

谁能告诉我为什么我得到空结果? 这是 JSON 文件

{
    "_id": 12346,
    "Shipped Time": "1days",
    "items": ["558", "561", "564", "567", "568"],
    "Invoice": {"_id": 4444,"Totalprice": 19160, "Date": { "$date": 
      "2021-08-12T22:00:00.000Z"}
    }
}

我尝试什么!

 db.orders.aggregate([
    { $unwind: "$Invoice" }, 
    {$match: {Date: {$gte: ISODate("2021-06-16T23:00:00.000Z")}}},
    { $group: { _id: "$_id", Totalprice: { $max: "$Invoice.Totalprice" }}}, 
    { $sort: { "Totalprice": -1 } },
    {$limit:10}
])

【问题讨论】:

  • 或许可以从您的订单集合中添加一些示例文档...
  • 我添加了 json 文件
  • Invoice 是一个对象,但是 $unwind 需要一个数组。只需跳过$unwind
  • 我必须改用什么?

标签: database mongodb mongoose


【解决方案1】:

查看example playground

 db.collection.aggregate([
  {
     $match: {
       "Invoice.Date": {
        $gte: ISODate("2021-06-16T23:00:00.000Z")
    }
   }
  },
  {
    $group: {
        _id: "$_id",
      Totalprice: {
      $max: "$Invoice.Totalprice"
      }
    }
  },
  {
  $sort: {
  "Totalprice": -1
  }
  },
  {
   $limit: 10
  } 
  ])

正如@wernfried-domscheit 所说,$unwind 对于对象来说是不必要的 _id 通常也是唯一的,所以上面的查询没有意义,除非 _id 不是唯一的......

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
相关资源
最近更新 更多