根据子文档中的值对 mongo 数据库文档进行排序

Sorting a mongo db document on basis of a value in subdocument

我有一个 mongodb 集合,其中用户数据采用以下格式:

{"_id" : ObjectId("5eceb0917a6a4d37688687cf"),
    "iscontactVerified" : true,
    "posts" : [ 
        {
            "_id" : ObjectId("5eceb0917a6a4d37688687d1"),
            "title" : "dewf",
            "hash" : "d9bf9eea351b2096ef467fe659e6598615d88115d96125ee91f5cd516b331549",
            "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
            "date" : ISODate("2020-05-27T18:25:59.030Z"),
        }, 
        {
            "_id" : ObjectId("5eceb0917a6a4d37688687d0"),
            "title" : "dewf1",
            "hash" : "d9bf911eea351b2096ef467fe659e6598615d88115d96125ee91f5cd516b331549",
            "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
            "date" : ISODate("2020-05-29T18:25:59.072Z")
        },  
        {
            "_id" : ObjectId("5ede210480a94515c0a1bde9"),
            "title" : "dewf2",
            "hash" : "d9bf923dds11eea351b2096ef467fe659e6598615d88115d96125ee91f5cd516b331549",
            "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
            "date" : ISODate("2020-05-30T18:25:59.072Z")
        }    ],
   
    "email" : "invite@gmial.com",
    "status" : "Active",
}

我必须找到在开始日期和结束日期之间发布了任何 post 的用户,然后根据 post 日期按升序或降序对用户进行排序。

下面的查询将获取 startDate(sDate) 和 endDate(eDate) 之间的所有文档。我建议你在你的节点服务器中做排序部分。

let users = await User.find({ "posts.date":{ $gte: sDate, $lte: eDate } })

否则,您可以进行 mongodb 聚合。不过我觉得上面的方法已经足够了。