我是mongodb的初学者,有一个sql查询,我想转换,我有麻烦。
此sql将为您提供每个祖父创建的最后一个子。
select parent.grandparent_id, parent.id , max(child.id)
from parent
join child on child.parent_id = parent.id
group by parent.grandparent_id
在mongodb我有一个文档结构:
grandparent_id, parent_id, child_id
最接近的是:
db.forum_topic_post_stats.aggregate([
{$group: {_id: "$grandparent_id", last_grandchild: { $max: "$child_id" } } },
])
我遇到的麻烦是访问parent_id,因为返回的文档只给出:
_id: <$grandparent_id>
last_grandchild: <$child_id>
如何显示父元素?我已经尝试使用项目,但当我指定父结果为空。
任何想法?
您的数据是关系的,但这并不意味着您不能将其放入MongoDB。
我假设你的数据是这样的:
{
"_id" : ObjectId("55a7c3bba13242e55e3a8848"),
"parent_id" : 245,
"parent" : "John doe",
"grandparent_id" : 1,
"child_id" : 34
}
{
"_id" : ObjectId("55a7c3cfa13242e55e3a8849"),
"parent_id" : 246,
"parent" : "Johnny Doe",
"grandparent_id" : 2,
"child_id" : 36
}
你的查询非常接近。试着运行这个命令来保持parent_id在键中。
db.parent.aggregate([{$group: { _id: { grandparent: "$grandparent_id", parent: "$parent_id"}, last_grandchild: { $max: "$child_id" } } } ])
最终得到如下结果:
{ "_id" : { "grandparent" : 2, "parent" : 246 }, "last_grandchild" : 36 }
{ "_id" : { "grandparent" : 1, "parent" : 245 }, "last_grandchild" : 34 }