对象数据转换的Mongodb数组
这是我收藏的一份文件。我想将此格式的数据转换为对象数据转换的Mongodb数组,mongodb,mongodb-query,Mongodb,Mongodb Query,这是我收藏的一份文件。我想将此格式的数据转换为 { "_id" : ObjectId("5e311e8bb94999f1be0d5ead"), "dealer_code" : "123", "mappinginfo" : [ { "territory" : "MORADABAD", "area" : "UPH", "zone" : "N" } ],
{
"_id" : ObjectId("5e311e8bb94999f1be0d5ead"),
"dealer_code" : "123",
"mappinginfo" : [
{
"territory" : "MORADABAD",
"area" : "UPH",
"zone" : "N"
}
],
"active" : NumberInt(1),
}
像这样的数据
{
"_id" : ObjectId("5e311e8bb94999f1be0d5ead"),
"dealer_code" : "123",
"territory" : "MORADABAD",
"area" : "UPH",
"zone" : "N"
"active" : NumberInt(1),
}
利用
解决方案-
解释
聚合管道顾名思义,作用于管道中的数据。管道具有输入、运算符和输出。例如上面的例子-
- 第一阶段是一个展开阶段,将提供整个收集。“展开”操作符将对单个文档进行迭代,并为每个文档创建与mappinginfo字段中元素数量相同的副本。对于您的情况,它只会创建一个副本。在展开阶段之后,生成的文档将如下所示-
- 下一阶段是投影阶段$project operator只需将上述文档列表作为输入,对于每个文档,它要么简单地按原样投影字段,要么根据当前文档中的可用内容更改字段的值<代码>{“活动”:1}表示按原样投影值<代码>{“zone”:“$mappinginfo.zone”}意味着在根级别的名称zone下映射mappinginfo字段内的zone值
db.collection.aggregate([
{
$unwind: "$mappinginfo"
},
{
$project: {
_id: 1,
active: 1,
dealer_code: 1,
territory: "$mappinginfo.territory",
area: "$mappinginfo.area",
zone: "$mappinginfo.zone",
}
},
])
db.test.aggregate([
{ $unwind: "$mappinginfo" },
{ $project: {
dealer_code: 1,
territory: "$mappinginfo.territory",
area: "$mappinginfo.area",
zone: "$mappinginfo.zone",
active: 1
}}
]);
[{
"_id" : ObjectId("5e311e8bb94999f1be0d5ead"),
"dealer_code" : "123",
"mappinginfo": {
"territory" : "MORADABAD",
"area" : "UPH",
"zone" : "N"
}
"active" : NumberInt(1),
}]
db.collection.aggregate([
{
$unwind: "$mappinginfo"
},
{
$project: {
_id: 1,
active: 1,
dealer_code: 1,
territory: "$mappinginfo.territory",
area: "$mappinginfo.area",
zone: "$mappinginfo.zone",
}
},
])