Arrays 如何在MongoDB中将数组转换为对象
我有一个给定的对象数组,数组元素数未知:Arrays 如何在MongoDB中将数组转换为对象,arrays,mongodb,object,mongoose,aggregation-framework,Arrays,Mongodb,Object,Mongoose,Aggregation Framework,我有一个给定的对象数组,数组元素数未知: { "content": [ { "_id": "refbooks", "total": 189, "published": 189, "created": 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
},.................]}
我想将其转换为给定的对象:
{ "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版。我想第二个版本不是合适的对象格式,您需要为make对象设置键值pare
{ "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
}}}
我找到了解决办法
{
$project: {
"content": {
"$arrayToObject": {
"$map": {
"input": "$content",
"as": "el",
"in": {
"k": "$$el._id",
"v": "$$el"
}
}
}
}
}
这是一个不可能的设置。。。不知道你的意思。每当你有一个集合的东西,它必须被包装在一个数组中…?你的预期结果不是一个有效的对象。是的,就像that@LabeebShareef我想您已经找到了答案,使用underline.js还有另一种方法可以做到这一点