回复头部信息并添加提取数组到相同的结果

Reply head informations and add extract array to same result

有人能帮我解决这个问题吗?

我有这个假的JSON...

[
  {
    "user": {
      "type": "PF",
      "code": 12345,
      "Name": "Darth Vader",
      "currency": "BRL",
      "status": "SINGLE",
      "localization": "NABOO",
      "createDate": 1627990848665,
      "olderAdress": [
        {
          "localization": "DEATH STAR",
          "createDate": 1627990848775
        },
        {
          "localization": "TATOOINE",
          "createDate": 1627990555888
        },
        
      ]
    }
  }
]

我的想法是,我需要提取“olderAdress”并创建新的寄存器,但我也需要保留原始寄存器。 例子:这是我希望的结果。

[
  {
    "_id": ObjectId("5a3456e000102030405000000"),
    "user": {
      "Name": "Darth Vader",
      "code": 12345,
      "createDate":1627990848665,
      "currency": "BRL",
      "localization": "NABOO",
      "status": "SINGLE",
      "type": "PF"
    }
  },  
  {
    "_id": ObjectId("5a789e000102030405000000"),
    "user": {
      "Name": "Darth Vader",
      "code": 12345,
      "createDate": 1627990848775,
      "currency": "BRL",
      "localization": "DEATH STAR",
      "status": "SINGLE",
      "type": "PF"
    }
  },
  {
    "_id": ObjectId("5a991e000102030405000000"),
    "user": {
      "Name": "Darth Vader",
      "code": 12345,
      "createDate": 1627990555888,
      "currency": "BRL",
      "localization": "TATOOINE",
      "status": "SINGLE",
      "type": "PF"
    }
  }
]

我在这个 link (Test to extract values) 中尝试同样的想法来测试,但不幸的是我不能。有人可以帮助我吗?

你已经非常接近了,你要做的只是在 $unwinding 之前将新位置添加到数组中。

像这样:

db.collection.aggregate([
  {
    "$addFields": {
      "user.olderAdress": {
        "$concatArrays": [
          "$user.olderAdress",
          [
            {
              "localization": "NABOO",
              "createDate": "$$NOW"
            }
          ]
        ]
      }
    }
  },
   ... rest of pipeline ...
])

Mongo Playground