我们在一个集合中有以下记录:
{ "_id" : ObjectId("1"), "date" : ISODate("2017-02-01T00:00:00Z") }
{ "_id" : ObjectId("2"), "date" : ISODate("2017-02-01T00:00:00Z") }
{ "_id" : ObjectId("3"), "date" : ISODate("2017-03-03T00:00:00Z") }
{ "_id" : ObjectId("4"), "date" : ISODate("2017-02-02T00:00:00Z") }
{ "_id" : ObjectId("5"), "date" : ISODate("2017-03-01T00:00:00Z") }
{ "_id" : ObjectId("6"), "date" : ISODate("2017-02-01T00:00:00Z") }
{ "_id" : ObjectId("7"), "date" : ISODate("2017-01-02T00:00:00Z") }
{ "_id" : ObjectId("8"), "date" : ISODate("2017-01-03T00:00:00Z") }
如何通过date
字段的$month
筛选最近的记录,如下所示:
{ "_id" : ObjectId("3"), "date" : ISODate("2017-03-03T00:00:00Z") }
{ "_id" : ObjectId("5"), "date" : ISODate("2017-03-01T00:00:00Z") }
3条答案
按热度按时间wixjitnu1#
$group
-按date
中一年中的第一天分组,并将文档添加到data
数组中。$sort
-按_id
说明排序。$skip
$limit
-从结果中取出第一个文档。$unwind
?将data
数组分解为多个文档.$replaceWith
-使用data
文件取代文件。Sample Mongo Playground
6jjcrrmo2#
如果你使用collection.find()方法,那么可以沿着使用sort方法。
例如:
collection.find().sort({created : -1})
如果要过滤,该看这一下:
希望这对你有帮助!
3b6akqbq3#
如果希望使用聚合,可以使用
$month
以取得开始日期的月份$match
以过滤值$sort
按ASC或DESC排序$project
保留或删除字段以下是代码
工作Mongo playground