Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MongoDB中返回具有最新日期的元素_Mongodb_Date_Nosql Aggregation_Grouped Collection Select - Fatal编程技术网

如何在MongoDB中返回具有最新日期的元素

如何在MongoDB中返回具有最新日期的元素,mongodb,date,nosql-aggregation,grouped-collection-select,Mongodb,Date,Nosql Aggregation,Grouped Collection Select,在MongoDB上,如何从该列表中选择具有最新日期的元素: [{ "_id" : ObjectId("5c5064f39d0c4b52cf6d1d55"), "Date" : "12-09-2018", "Type" : "A", "Value" : 73650.14 }, { "_id" : ObjectId("5c5064f39d0c4b52cf6d1d15"), "Date" : "12-09-2018", "Type" : "B", "Value" : 73650.14 }, { "_i

在MongoDB上,如何从该列表中选择具有最新日期的元素:

[{
"_id" : ObjectId("5c5064f39d0c4b52cf6d1d55"),
"Date" : "12-09-2018",
"Type" : "A",
"Value" : 73650.14
},
{
"_id" : ObjectId("5c5064f39d0c4b52cf6d1d15"),
"Date" : "12-09-2018",
"Type" : "B",
"Value" : 73650.14
},
{
"_id" : ObjectId("5c5064f39d0c4b52cf6d1d58"),
"Date" : "13-09-2018",
"Type" : "A",
"Value" : 80000
},
{
"_id" : ObjectId("5c5064f39d0c4b52cf6d1d56"),
"Date" : "13-09-2018",
"Type" : "B",
"Value" : 800000
}]
要获取此列表,请执行以下操作:

[{
"_id" : ObjectId("5c5064f39d0c4b52cf6d1d58"),
"Date" : "13-09-2018",
"Type" : "A",
"Value" : 80000
},
{
"_id" : ObjectId("5c5064f39d0c4b52cf6d1d56"),
"Date" : "13-09-2018",
"Type" : "B",
"Value" : 800000
}]
这可能很容易,但尽管做了很多研究,我还是做不到。我试着使用$group操作符,但我从未找到如何推送所需的值(要么我只得到日期,要么所有元素都没有任何过滤器)

我是Mongo DB的新手,非常感谢您的帮助


感谢

MongoDB 3.6的以下查询为每个文档添加了一个新的日期字段,按该字段分组并将该组中的文档推送到一个数组中,按_id(日期)降序排序,限制到第一个文档(最近的日期),展开文档数组,然后通过替换每个文档的根并投影原始字段来清理结果

db.colx.aggregate([{
  $addFields: {
    ISODate: {
      $dateFromString: {
        dateString: "$Date"
      }
    }
  }
}, {
  $group: {
    _id: "$ISODate", 
    items: {
      $push: "$$ROOT"
    }
  }
}, {
  $sort: {
    _id: -1
  }
}, {
  $limit: 1
}, {
  $unwind: "$items"
}, {
  $replaceRoot: {
    newRoot: "$items"
  }
}, {
  $project: {
    _id: 1, 
    Date: 1, 
    Type: 1, 
    Value: 1
  }
}])
输出:

{ "_id" : ObjectId("5c5064f39d0c4b52cf6d1d58"), "Date" : "13-09-2018", "Type" : "A", "Value" : 80000 }
{ "_id" : ObjectId("5c5064f39d0c4b52cf6d1d56"), "Date" : "13-09-2018", "Type" : "B", "Value" : 800000 }

db.collection.find({}).sort({Date:-1})
@ash如果你把这个作为一个答案写下来,我可以给你一票。。。