gpt4 book ai didi

用于查找最新数据的 mongodb 聚合

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

我有一个看起来像的模型

{
"_id" : ObjectId("5b975b7ffb8361fa0cdacc41"),
"refid" : 1,
"item" : "xyz1",
"qnid" : 1
}
{
"_id" : ObjectId("5b975b7ffb8361fa0cdacc42"),
"refid" : 1,
"item" : "xyz2",
"qnid" : 2
}
{
"_id" : ObjectId("5b975b7ffb8361fa0cdacc43"),
"refid" : 1,
"item" : "xyz3",
"qnid" : 3
}
{
"_id" : ObjectId("5b975b7ffb8361fa0cdacc44"),
"refid" : 4,
"item" : "xyz4",
"qnid" : 4
}
{
"_id" : ObjectId("5b975b7ffb8361fa0cdacc45"),
"refid" : 4,
"item" : "xyz5",
"qnid" : 5
}

这里 refid 是文章的引用 ID,qnid 是保存版本的实际 ID。我想获取所有文章,即使用最新版本数据进行 refid。

我想通过refid获取最近聚合的记录

文章 refid 1 的 qnid 3 是最近的一篇。文章 refid 4 将 qnid 5 作为最近的一篇。即

{
"_id" : ObjectId("5b975b7ffb8361fa0cdacc43"),
"refid" : 1,
"item" : "xyz3",
"qnid" : 3
}
{
"_id" : ObjectId("5b975b7ffb8361fa0cdacc45"),
"refid" : 4,
"item" : "xyz5",
"qnid" : 5
}

请帮帮我,我该怎么做。我在排序中使用了聚合函数,但它没有提供数据

最佳答案

您可以在 3.4 中使用以下聚合。

$sort 在 refid asc 和 qnid desc 上。

$group 通过 refid 和 $first$$ROOT 访问整个文档。

$replaceRoot 将数据提升到顶部。

db.collection.aggregate([
{"$sort":{"refid":1,"qnid":-1}},
{"$group":{
"_id":"$refid",
"data":{"$first":"$$ROOT"}
}},
{"$replaceRoot":{"newRoot":"$data"}}
])

关于用于查找最新数据的 mongodb 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52291111/

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