【发布时间】:2020-08-30 07:16:19
【问题描述】:
我有一个不是我创建的 mongo 数据库,但需要从中提取一些额外的数据。我可以访问数据库,并且可以查看和查询表,但是我无法连接两个表以在查询输出中提供所有必要的信息。
我有 2 个我感兴趣的表。第一个设置,它的文档看起来像这样(截断):
{
"_id" : ObjectId("5aff382669153dc20edf945a"),
"key" : "mgmt",
"site_id" : "5aff382669153dc20edf9456",
"advanced_feature_enabled" : false,
"auto_upgrade" : true
}
和网站,看起来像这样(截断):
{
"_id" : ObjectId("5aff382669153dc20edf9456"),
"desc" : "Joe's Crab Shack",
}
setting 表中的site_id 是一个外键,它引用site 表中的十六进制组件_id。
我希望输出类似于此,但我没有成功:
{
"_id" : ObjectId("5aff382669153dc20edf9456"),
"desc" : "Joe's Crab Shack",
"setting" : [
"_id" : ObjectId("5aff382669153dc20edf945a"),
"key" : "mgmt",
"site_id" : "5aff382669153dc20edf9456",
"advanced_feature_enabled" : false,
"auto_upgrade" : true
]
}
我希望能够只进行数据库查询,目前使用的是 Robo 3T,而不必求助于脚本或编程。我能够达到预期结果的最接近的结果如下。此查询返回 site 文档,以及所有没有 site_id 外键的 setting 文档。
db.site.aggregate([
{
$lookup:
{
from: "setting",
localField:"_id.str",
foreignField:"site_id",
as: "setting"
}
}
])
我确定我遗漏了一些简单的东西,但我对 MongoDB 很陌生,并且由于 SQL 和 Mongo 之间的术语差异而有点迷茫。对于任何想知道的人,数据库实际上是大型多站点 Ubiquiti 控制器的后端,我希望创建“报告”,为需要升级的设备提供更多洞察,哪些设置不符合我们的“默认”配置等
【问题讨论】:
标签: mongodb mongodb-query robo3t