我正在尝试将数组元素转换为文档中的新行,但我总是得到空值,这就是我现在所拥有的。
{
"_id" : ObjectId("5af9a044db06595c4a3c60d3"),
"word" : [
"1501143005",
"41D44F7F-D5B3-4f3f-85AC-1E122DA8C506",
"4100",
"7493"
]}这是我想要得到的
{
"_id" : ObjectId("5af9a044db06595c4a3c60d3"),
"newId" : "1501143005-4100",
"oldId" : "7493-4100"} 到目前为止,我已经进入了下一个项目。
db.getCollection('buffer2').aggregate([
{
$project:{
word:{
"$map":{
"input": "$word", "as" : "u",
"in":{
newId: { $concat: [ "$$u.0", "-", "$$u.2" ] },
oldId: { $concat: [ "$$u.3", "-", "$$u.2" ] }
}
}
}}
}]);我将非常感谢你的帮助
发布于 2018-05-14 17:10:26
你可以用$concat和$arrayElemAt代替$map
db.collection.aggregate([
{
$project: {
newId: {
$concat: [
{
$arrayElemAt: [
"$word",
0
]
},
"-",
{
$arrayElemAt: [
"$word",
2
]
}
],
},
oldId: {
$concat: [
{
$arrayElemAt: [
"$word",
3
]
},
"-",
{
$arrayElemAt: [
"$word",
2
]
}
],
}
}
}
])输出
{
"_id" : ObjectId("5af9a044db06595c4a3c60d3"),
"newId" : "1501143005-4100",
"oldId" : "7493-4100"
} https://stackoverflow.com/questions/50335167
复制相似问题