Mongodb 展开包含的Mongo文档
这是给MongoDB的 我有一份文件,上面写着Mongodb 展开包含的Mongo文档,mongodb,mongodb-query,Mongodb,Mongodb Query,这是给MongoDB的 我有一份文件,上面写着Employee,如下所示: { "_id":"e01", "name":"Andy", "salary":"10000", "address":"ad01id" } 这是一个简单的员工文档,地址是address文档的外键,如下所示(针对上述员工) 我需要一个帮助来编写一个查询,该查询将获取员工,但会给我一个输出,该输出将员工的地址字段展开,其整个文档如下所示 { "_id":"e01", "name":"Andy",
Employee
,如下所示:
{
"_id":"e01",
"name":"Andy",
"salary":"10000",
"address":"ad01id"
}
这是一个简单的员工文档,地址是address
文档的外键,如下所示(针对上述员工)
我需要一个帮助来编写一个查询,该查询将获取员工
,但会给我一个输出,该输出将员工
的地址
字段展开,其整个文档如下所示
{
"_id":"e01",
"name":"Andy",
"salary":"10000",
"address":{
"pin":"999",
"Home":{
"street":"101",
"city":"someCity"
},
"Country":"someCountry"
}
}
我尝试了$lookup
和$merge
,但无法获得所需的输出-$merge
如果后面的文档具有相同的键,则隐藏早期文档中的键,这在我的真实场景中是如此。我的实际文档有一些同名的键。例如name
在我的两个实际文档中都有
提前谢谢 用于“连接”两个集合中的数据,或用于将作为$lookup
结果的数组转换为嵌套子文档:
db.Employee.aggregate([
{
$lookup: {
from: "Address",
localField: "address",
foreignField: "_id",
as: "address"
}
},
{
$addFields: {
address: { $arrayElemAt: [ "$address", 0 ] }
}
},
{
$project: {
"address._id": 0
}
}
])
需要“连接”两个集合中的数据,或可用于将作为$lookup
结果的数组转换为嵌套子文档:
db.Employee.aggregate([
{
$lookup: {
from: "Address",
localField: "address",
foreignField: "_id",
as: "address"
}
},
{
$addFields: {
address: { $arrayElemAt: [ "$address", 0 ] }
}
},
{
$project: {
"address._id": 0
}
}
])
您也可以使用“填充”
db.Employee.find(
{
},
)
.populate("address", "pin Home Country")
.exec(function(err, result) {
console.log(result)
});
也可以使用“填充”
db.Employee.find(
{
},
)
.populate("address", "pin Home Country")
.exec(function(err, result) {
console.log(result)
});