MongoDB—根据匹配条件从另一个对象数组中添加字段到一个数组中的对象



我试图在MongoDB中编写一个聚合,结果如下所示。请建议我如何建立MongoDB聚合,以实现我的输出。

Collection (input):我想添加一个key test_id到obj。基于匹配条件的Test_id对象。

请建议一个写MongoDB查询的最佳方式来实现我的结果。

  1. $set——设置dataObj.cFS.data字段。

    1.1。$map-迭代dataObj.cFS.data中的每个元素并返回一个新数组。

    1.1.1。$mergeObjects-将当前迭代对象(data)与1.1.1.1的结果合并。

    1.1.1.1。$first-从结果1.1.1.1.1中获取第一个过滤文档。

    1.1.1.1.1。$filter-通过匹配cf_idcfCoreData数组中筛选文档。

db.collection.aggregate([
{
$set: {
"dataObj.cFS.data": {
$map: {
input: "$dataObj.cFS.data",
as: "data",
in: {
$mergeObjects: [
"$$data",
{
$first: {
$filter: {
input: "$cfCoreData",
cond: {
$eq: [
"$$data.cf_id",
"$$this.cf_id"
]
}
}
}
}
]
}
}
}
}
}
])

Demo @ Mongo Playground

最新更新