如何在MongoDB中将数组转换为对象
Posted
技术标签:
【中文标题】如何在MongoDB中将数组转换为对象【英文标题】:how to convert array to object in MongoDB 【发布时间】:2019-03-29 23:30:29 【问题描述】:我有一个对象数组,其中包含未知数量的数组元素:
"content": [
"_id": "refbooks",
"total": 189,
"published": 189,
"created": 0,
"approved": 0,
"rejected": 0,
"sent_for_approval": 0
,
"_id": "weblinks",
"total": 1911,
"published": 1899,
"created": 10,
"approved": 2,
"rejected": 0,
"sent_for_approval": 0
,.................]
我想把它转换成给定的对象:
"content":
"_id": "refbooks",
"total": 189,
"published": 189,
"created": 0,
"approved": 0,
"rejected": 0,
"sent_for_approval": 0
,
"_id": "weblinks",
"total": 1911,
"published": 1899,
"created": 10,
"approved": 2,
"rejected": 0,
"sent_for_approval": 0
,.................
我尝试使用 $unwind,但没有得到所需的输出。 如何在 MongoDB 中实现这个内部聚合管道?
我使用的是 Mongo 3.4 版。
【问题讨论】:
这是一个不可能的设置...不知道你的意思。每当你有一个东西的集合时,它必须被包装在一个数组中......? 你的预期结果不是一个有效的对象。 【参考方案1】:我找到了解决办法。
$project:
"content":
"$arrayToObject":
"$map":
"input": "$content",
"as": "el",
"in":
"k": "$$el._id",
"v": "$$el"
【讨论】:
【参考方案2】:我猜第二个不是正确的对象格式,你需要一个键值对 make object
"content":
"key1":
"_id": "refbooks",
"total": 189,
"published": 189,
"created": 0,
"approved": 0,
"rejected": 0,
"sent_for_approval": 0
,
"key2":
"_id": "weblinks",
"total": 1911,
"published": 1899,
"created": 10,
"approved": 2,
"rejected": 0,
"sent_for_approval": 0
【讨论】:
是的,就像那样 @LabeebShareef 我猜你已经找到了答案,还有另一种方法可以使用 underscore.js underscorejs.org/#groupBy以上是关于如何在MongoDB中将数组转换为对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在javascript中将嵌套对象转换为对象数组? [关闭]