MongoDB - 遍历数组数组
MongoDB - Loop through array of arrays
我的 MongoDB collection.
中有一个包含数组数组的文档
{
"platformId":"CMC_123",
"carInfo":[
["Toyota",20,"White"],
["Suzuki",19,"Gray"],
["Ford",22,"Red"]
]
}
我期待下面的输出
carMilage :{
"Toyota":20,
"Suzuki":19,
"Ford":22
}
下面是我的汇总
[
{
$match:{
platformId : "CMC_123"
}
},
{
$project:{
carMilage : '$carInfo'
}
}
]
我被 $project
字段困住了。如何使用 $project
字段实现上述输出。谢谢。
$project
-
2.1 $arrayToObject
- 将数组转换为对象,结果为 2.1.1.
2.1.1 $map
- 迭代 carInfo
数组。获取当前迭代数组 ($$this
) 的第一项作为 k
,第二项作为 v
。
db.collection.aggregate([
{
$match: {
platformId: "CMC_123"
}
},
{
$project: {
carMilage: {
"$arrayToObject": {
$map: {
input: "$carInfo",
in: {
k: {
$arrayElemAt: [
"$$this",
0
]
},
v: {
$arrayElemAt: [
"$$this",
1
]
}
}
}
}
}
}
}
])
我的 MongoDB collection.
中有一个包含数组数组的文档{
"platformId":"CMC_123",
"carInfo":[
["Toyota",20,"White"],
["Suzuki",19,"Gray"],
["Ford",22,"Red"]
]
}
我期待下面的输出
carMilage :{
"Toyota":20,
"Suzuki":19,
"Ford":22
}
下面是我的汇总
[
{
$match:{
platformId : "CMC_123"
}
},
{
$project:{
carMilage : '$carInfo'
}
}
]
我被 $project
字段困住了。如何使用 $project
字段实现上述输出。谢谢。
$project
-2.1
$arrayToObject
- 将数组转换为对象,结果为 2.1.1.2.1.1
$map
- 迭代carInfo
数组。获取当前迭代数组 ($$this
) 的第一项作为k
,第二项作为v
。
db.collection.aggregate([
{
$match: {
platformId: "CMC_123"
}
},
{
$project: {
carMilage: {
"$arrayToObject": {
$map: {
input: "$carInfo",
in: {
k: {
$arrayElemAt: [
"$$this",
0
]
},
v: {
$arrayElemAt: [
"$$this",
1
]
}
}
}
}
}
}
}
])