我曾尝试通过 Mongo DB 3.0 上的数据限制组,但似乎没有合适的选项来执行此操作。
我想根据数组中的日期 dateCreated
和对应的记录数/天显示每天的 5 条最新记录
db.entries.find().limit(1).pretty();
{
"_id" : "bd348fb4dd38dd7a2",
"className" : "com.model.Entry",
"name" : "yQLs3T5NCJocPlOPuLgyEkQ9",
"description" : "4Z09BNPQNFhFiMbjqL RWC5SMs0d0XzogqdNmjk5dx1mw9roHgRrl8ljbHo16p1WTlNYU",
"account" : DBRef("accounts", "248a3-448b-a912-6573f23d34a5"),
"iconUrl" : "gA9QTuqYv9wZq1xKM37jdL",
"userCreatedBy" : DBRef("users", "8044-45d2-8567-a6cb808ce164"),
"timezone" : "Atlantic/Faroe",
"globalAccess" : false,
"tags" : [
{
"_id" : "8926079483331",
"category" : "PPq5k",
"value" : "NdKFQq",
"description" : "uDQVnhJ2tu5XWHinb",
"origin" : "User",
"dateCreated" : ISODate("2021-07-16T18:20:41.731Z"),
"dateModified" : ISODate("2021-07-16T18:20:53.319Z"),
"externalId" : "xkblzrwE"
}
{
"_id" : "89389483331",
"category" : "PPe5k",
"value" : "NdKFQq",
"description" : "uDQVnhJ2tu5XWHinb",
"origin" : "User",
"dateCreated" : ISODate("2021-07-16T18:20:41.731Z"),
"dateModified" : ISODate("2021-07-16T18:20:53.319Z"),
"externalId" : "xkblzrwE"
}
]}
我期待的输出:
[2021-07-16 (Date)-> (5 Latest Entries) , 2 (total records for that day) ]
我试过使用下面的解决方案 How to get lastest N records of each group in mongodb?
切片在 mongo 3.0 上不可用,我有点卡在这里
最佳答案
我不确定您是否可以使用聚合,但下面的聚合可以为您提供所需的结果。
db.collection.aggregate([
{
"$unwind": "$tags"
},
{
$match: {
"tags.dateCreated": {
"$gte": ISODate("2021-07-16")
}
}
},
{
"$replaceRoot": {
"newRoot": "$tags"
}
},
{
"$limit": 5
}
])
如果您有任何问题,请随时问我。
关于mongodb - 尝试在 mongo db 3.0 上限制 Group By 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68450400/