首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MongoDB中计算滞后向量

在MongoDB中计算滞后向量
EN

Stack Overflow用户
提问于 2016-06-05 19:30:57
回答 1查看 184关注 0票数 1

是否有方法计算MongoDB数组的滞后数组?例如,如果我有一个文档:

代码语言:javascript
复制
{id: 542532gsegsegt32t2,
values: [1, 6, 2, 45, 6]
}

是否有一种方法可以生成查询的结果:

代码语言:javascript
复制
{values_lay : [5, -4, 43, -51]}

计算为[6-1, 2-6, etc...]..。谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-05 20:53:39

您可以使用聚合框架来完成它,但是imho在客户机/应用程序端计算时会更容易和更灵活。

代码语言:javascript
复制
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 =>

代码语言:javascript
复制
arrayB[1]   = arrayA[2]   - arrayA[1]
arrayB[n-2] = arrayA[n-1] - arrayA[n-2]
arrayB[n-1] = arrayA[n]   - arrayA[n-1]

可用于服务器端/客户端的js代码段

代码语言:javascript
复制
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);
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37645934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档