提取数组的值并添加到同一个select mongoDB中
Posted
技术标签:
【中文标题】提取数组的值并添加到同一个select mongoDB中【英文标题】:Extract value of array and add in the same select mongoDB 【发布时间】:2021-10-30 10:00:57 【问题描述】:我是 mongoDB 聚合的新手,我遇到了这种情况。我有这个 Json,我需要通过“选择”这个对象进行转换:
"type": "PF",
"code": 12345
"Name": Darth Vader,
"currency": "BRL",
"status": "SINGLE",
"adress": [
"localization": "DEATH STAR",
"createDate": 1627990848665
,
"localization": "TATOOINE",
"createDate": 1627990555665
,
]
这样:
"type": "PF",
"code": 12345
"Name": Darth Vader,
"currency": "BRL",
"status": "SINGLE",
"localization": "DEATH STAR",
"createDate": 1627990848665
,
"type": "PF",
"code": 12345
"Name": Darth Vader,
"currency": "BRL",
"status": "SINGLE",
"localization": "TATOOINE",
"createDate": 1627990555665
所以,在我的查询完成后,我将有 02 个对象而不是 01。我该怎么做? 我想通过 select 执行此操作,因为转换后我将按 createDate 排序并限制返回 API 的记录数。我在我的项目中使用标准。
【问题讨论】:
这能回答你的问题吗? Retrieve only the queried element in an object array in MongoDB collection 不幸的是没有,因为我需要向其他人重复第一个元素的相同信息。 =( 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:执行此操作的方法是$unwind
,这将为数组的每个成员制作一份文档副本。
Test code here
db.collection.aggregate([
"$unwind":
"path": "$user.adress"
,
"$set":
"user":
"$mergeObjects": [
"$user",
"$user.adress"
]
,
"$unset": [
"user.adress"
]
,
"$sort":
"createDate": 1
,
"$limit": 10
])
Edit1(上面是如果user
是一个字段,如果是集合的名字)
$$ROOT
是一个系统变量,具有所有文档的值
Test code here
查询
db.collection.aggregate([
"$unwind":
"path": "$adress"
,
"$replaceRoot":
"newRoot":
"$mergeObjects": [
"$$ROOT",
"$adress"
]
,
"$unset": [
"adress"
]
,
"$sort":
"createDate": 1
,
"$limit": 10
])
【讨论】:
我只有一个问题。我正在查看我的 json,但我犯了一个错误……我没有名字 USER。在这种情况下我该怎么办?只有这样... "type": "PF", "code": 12345 "Name": Darth Vader, "currency": "BRL", "status": "SINGLE", "adress": [ "本地化”:“死亡之星”,“createDate”:1627990848665 ,“本地化”:“TATOOINE”,“createDate”:1627990555665 ,] 我有点想知道,如果用户是一个字段或集合的名称,请尝试编辑,我想你会没事的。 是的...这正是我所需要的!再次感谢你)!! =) 我记得另一种情况......我在 Json 中有实际位置,我需要保留实际位置并回复“孩子”的其他信息,因为你给我看。在这种情况下,我如何保留实际位置并为退货添加“孩子”..???? mongoplayground.net/p/W4hBM0KN1UDmongoplayground.net/p/W4hBM0KN1UD 我有点困惑,如果它的不同问题可能会问新问题,新数据和你想要的预期输出。所以人们可以提供帮助。以上是关于提取数组的值并添加到同一个select mongoDB中的主要内容,如果未能解决你的问题,请参考以下文章