gpt4 book ai didi

javascript - 获取 $group by 之后的最新文档

转载 作者:可可西里 更新时间:2023-11-01 10:39:02 25 4
gpt4 key购买 nike

我正在使用 official MongoDB driver对于 Node.js。

这就是我的消息数据的结构。如您所见,每个帖子都有一个时间戳、一个用户 ID 和主题 ID。

[
{
"_id" : ObjectId("5b0abb48b20c1b4b92365145"),
"topicId" : "XN7iqmCFD4jpgJZ6f",
"timestamp" : 1527429960,
"user" : "5b0869636f4e363e300d105a",
"content" : "lorem ipsum"
}
]

现在我需要检查是否有主题,最新的帖子(=最高时间戳)与我自己的 ID 不匹配。这样我就知道哪个主题有新答案(这不是我自己的帖子)。

所以我从这个开始:

db.messages.find({
$query: {
user: { $ne: "myUserId" }
},
$orderby: {
timestamp: -1
}
}).limit(1).toArray()

我的问题是,我不知道如何按 topicId 对我的查询进行分组。不知何故,我的尝试似乎有错误的语法。

最佳答案

必须用aggregate按topicId分组,然后用$sort按时间排序,再用$limit限制查询

db.messages.aggregate([
{ $match: { user: { $ne: "myUserId" } }},
{ $group: {
_id: "$topicId",
timestamp: { $first: "$timestamp"},
user: { $first: "$user" },
content: { $first: "$content" }
}},
{ $sort: { timestamp: -1 } },
{ $limit: 1 }
])

关于javascript - 获取 $group by 之后的最新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50553133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com