是否有方法计算MongoDB数组的滞后数组?例如,如果我有一个文档:
{id: 542532gsegsegt32t2,
values: [1, 6, 2, 45, 6]
}是否有一种方法可以生成查询的结果:
{values_lay : [5, -4, 43, -51]}计算为[6-1, 2-6, etc...]..。谢谢你的建议。
发布于 2016-06-05 20:53:39
您可以使用聚合框架来完成它,但是imho在客户机/应用程序端计算时会更容易和更灵活。
db.collection.aggregate([
{
$project:
{
values_lay: [
{ $subtract: [{$arrayElemAt: [ "$values", 1 ]}, { $arrayElemAt: [ "$values", 0 ]}]},
{ $subtract: [{$arrayElemAt: [ "$values", 2 ]}, { $arrayElemAt: [ "$values", 1 ]}]},
{ $subtract: [{$arrayElemAt: [ "$values", 3 ]}, { $arrayElemAt: [ "$values", 2 ]}]},
{ $subtract: [{$arrayElemAt: [ "$values", 4 ]}, { $arrayElemAt: [ "$values", 3 ]}]},
],
}
}
])编辑
我的假设是:当我们有N元素的时,我们需要创建N-1元素的arrayB =>
arrayB[1] = arrayA[2] - arrayA[1]
arrayB[n-2] = arrayA[n-1] - arrayA[n-2]
arrayB[n-1] = arrayA[n] - arrayA[n-1]可用于服务器端/客户端的js代码段
db.hellob.find().forEach(function (doc) {
var arraySize = doc.values.length;
doc.results = [];
for (var i = 0; i < arraySize - 1; i++) {
doc.results.push(doc.values[i + 1] - doc.values[i])
};
printjson(doc);
})https://stackoverflow.com/questions/37645934
复制相似问题