合并数组中的两个对象,其中一个对象的键嵌套比另一个对象更深,位于 Mongo DB 的同一文档中
Posted
技术标签:
【中文标题】合并数组中的两个对象,其中一个对象的键嵌套比另一个对象更深,位于 Mongo DB 的同一文档中【英文标题】:Merge two objects inside an array, one with a key nested deeper than the other in the same document in Mongo DB 【发布时间】:2021-06-16 05:44:50 【问题描述】:文档架构
id
是加入的关键
"foo" : [
"properties" :
"id" : 1
,
,
"properties" :
"id" : 2
,
],
"bar" : [
"id" : 1,
"metadata" : abc
,
"id" : 2,
"metadata" : def
]
目标
"foo" : [
"properties" :
"id" : 1,
"metadata" : abc
,
,
"properties" :
"id" : 2,
"metadata" : def
,
,
【问题讨论】:
【参考方案1】:您可以在架构上使用 $lookup,并在 $unwind 和 $project 的帮助下获得所需的结果。
查询:
db.foo.aggregate(
$lookup:
from: "bar",
localField: "properties.id",
foreignField: "id",
as: "properties"
,
,
$unwind:
path: "$properties",
,
$project:
_id: 0,
properties: 1
)
输出:
[
"properties":
"_id": ObjectId("5a934e000102030405000000"),
"id": 1,
"metadata": "abc"
,
"properties":
"_id": ObjectId("5a934e000102030405000001"),
"id": 2,
"metadata": "def"
]
【讨论】:
以上是关于合并数组中的两个对象,其中一个对象的键嵌套比另一个对象更深,位于 Mongo DB 的同一文档中的主要内容,如果未能解决你的问题,请参考以下文章
如果第二个数组的项目包含数组的第一个对象的 id,则合并 Angular 8 中的两个对象数组
合并嵌套在数组 mongoose 中的对象内的 $lookup 值