根据子文档中的值对 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 聚合。不过我觉得上面的方法已经足够了。
我有一个 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 聚合。不过我觉得上面的方法已经足够了。