json - 回复头部信息并将提取数组添加到相同的结果
问题描述
有人请帮我解决这种情况吗?
我有这个假的 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"
}
}
]
我在此链接(测试以提取值)中尝试相同的想法进行测试,但不幸的是我不能。有人可以帮我吗?
解决方案
您非常接近,您要做的只是在$unwind
ing 之前将新位置添加到数组中。
像这样:
db.collection.aggregate([
{
"$addFields": {
"user.olderAdress": {
"$concatArrays": [
"$user.olderAdress",
[
{
"localization": "NABOO",
"createDate": "$$NOW"
}
]
]
}
}
},
... rest of pipeline ...
])
推荐阅读
- javascript - Firestore:更新嵌套对象中的字段
- c++ - 哎呀,垂头丧气
- python - 用 Python 录制窗口音频?
- reactjs - 如何在 mapbox 顶部添加三个.js 对象
- windows-community-toolkit - WebView (WinForms) 如何清除缓存?
- c# - 将方法存储到变量中并在 C# 中以三元形式使用它们
- r - 从 excel 中读取 mdy_hms AM/PM 到 r
- windows - VSTS Remote Powershell 任务抛出错误
- linux - Unity Linux 构建上的透明度异常
- ruby - 从哈希条目中获取范围