繁体   English   中英

如何在嵌套对象数组(MongoDB)中查找最新日期

[英]How to find the latest date in nested array of objects (MongoDB)

我试图在整个集合的“订单”数组中找到最新的“订单”(不仅在一个对象中)。

数据:

[
  {
    _id: 1,
    orders: [
      {
        title: 'Burger',
        date: {
          $date: '2021-07-18T13:12:08.717Z',
        },
      },
    ],
  },
  {
    _id: 2,
    orders: [
      {
        title: 'Salad',
        date: {
          $date: '2021-07-18T13:35:01.586Z',
        },
      },
    ],
  },
];

代码:

  var restaurant = await Restaurant.findOne({
    'orders.date': 1,
  });

您必须为此使用聚合

db.collection.aggregate([
  { $unwind: "$orders" },
  { $sort: {  "orders.date": -1 } },
  { $limit: 1 },
  {
    "$group": {
      "_id": "$_id",
      "orders": { "$first": "$orders" }
    }
  }
])

工作Mongo 游乐场

相当简单:

db.collection.aggregate([
  { $project: { latest_order: { $max: "$orders.date" } } }
])

如果您想获得完整订单,请使用以下命令:

db.collection.aggregate([
  {
    $project: {
      latest_order: {
        $first: {
          $filter: {
            input: "$orders",
            cond: { $eq: [ "$$this.date", { $max: "$orders.date" } ] }
          }
        }
      }
    }
  },
  { $sort: { "latest_order.date": 1 } },
  { $limit: 1 }
])

蒙戈游乐场

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM