【发布时间】:2021-08-17 10:47:23
【问题描述】:
给定一个名为 users 的现有 mongo db 集合,其中包含一些文档,如下所示:
{
"_id" : ObjectId("611a11a09500700009d09a12"),
"userId" : "abc",
"createdAt" : ISODate("2021-08-14T07:22:00.535Z"),
"isActive" : true,
"isEligible" : true
},
{
"_id" : ObjectId("611a11a09500700009d09a13"),
"userId" : "abc",
"createdAt" : ISODate("2021-08-15T07:20:00.535Z"),
"isActive" : true,
"isEligible" : true
},
{
"_id" : ObjectId("611a11a09500700009d09a14"),
"userId" : "def",
"createdAt" : ISODate("2021-08-15T07:22:00.535Z"),
"isActive" : true,
"isEligible" : true
},
{
"_id" : ObjectId("611a11a09500700009d09a15"),
"userId" : "abc",
"createdAt" : ISODate("2021-08-16T07:18:00.535Z"),
"isActive" : true,
"isEligible" : true
},
{
"_id" : ObjectId("611a11a09500700009d09a16"),
"userId" : "abc",
"createdAt" : ISODate("2021-08-16T07:20:00.535Z"),
"isActive" : true,
"isEligible" : true
}
{
"_id" : ObjectId("611a11a09500700009d09a17"),
"userId" : "def",
"createdAt" : ISODate("2021-08-16T07:22:00.535Z"),
"isActive" : true,
"isEligible" : true
}
除了上面每个文档中提到的键之外,还可以有多个其他键。
在这里,我想编写一个执行以下操作并返回数据的查询:
- 选择 createdAt 大于或等于“2021-08-15T00:00:00.000Z”的记录
- 对于每个 userId,仅返回最新记录,即按 createdAt 降序排序的记录。
- 返回的文档应该包含原始文档中存在的所有键。键的数量可能比文档中显示的要多得多。因此,查询应该自动返回所有键。
以下是所需的示例输出:
{
"_id" : ObjectId("611a11a09500700009d09a16"),
"userId" : "abc",
"createdAt" : ISODate("2021-08-16T07:20:00.535Z"),
"isActive" : true,
"isEligible" : true
}
{
"_id" : ObjectId("611a11a09500700009d09a17"),
"userId" : "def",
"createdAt" : ISODate("2021-08-16T07:22:00.535Z"),
"isActive" : true,
"isEligible" : true
}
【问题讨论】:
标签: mongodb mongodb-query