mongodb中具有顺序的聚合数组
这是目前的结果mongodb中具有顺序的聚合数组,mongodb,aggregation-framework,Mongodb,Aggregation Framework,这是目前的结果 {{"id": 1, "result":["a", "b", "c", "d"]},{"id": 2, "result":["e", "f", "g", "h"]}} 我想要的是 {{"id": 1, "re
{{"id": 1, "result":["a", "b", "c", "d"]},{"id": 2, "result":["e", "f", "g", "h"]}}
我想要的是
{{"id": 1, "result":[{"before": "a", "after": "b"},{"before": "b", "after": "c"},{"before": "c", "after": "d"}]},{"id": 2, "result":[{"before": "e", "after": "f"},{"before": "f", "after": "g"},{"before": "g", "after": ""}]}}
我不知道怎么做,你需要使用框架
伪码
你必须把它读给像Jackson这样的JSONParser,然后操纵你当前的结果以得到你想要的结果。这是一本漂亮的手册:)
var tmp = [];
for(var idx=0; idx < result.length-1; idx++){
tmp.append({before: result[idx], after: result[idx + 1]});
}
root.result = tmp;
db.collection.aggregate([
{
$project: {
id: 1,
result: {
$map: {
input: {
$range: [
0,
{
$subtract: [
{
$size: "$result"
},
1
]
},
1
]
},
as: "idx",
in: {
before: {
$arrayElemAt: [
"$result",
"$$idx"
]
},
after: {
$arrayElemAt: [
"$result",
{
$add: [
"$$idx",
1
]
}
]
}
}
}
}
}
}
])