node.js - 如何解决 mongodb 上特定集的重复问题

标签 node.js mongodb algorithm sorting columnsorting

Problem Set For doing analytics on MongoDB and Nodejs

这里这个语气是我附加的问题集,以图像的形式出现。现在我要解决的是:

This One is My Problem Set. In this Picture, There are 5 Columns. Out of this 1 to 4th column have some alphabets. Every Alphabets Have its own Weighted Value. So By checking the repetition of alphabets with the weighted value we have to store it in a sorted order on 5th Table i.e Final Value. So what's the procedure for doing this task on node-js / MongoDB?

实际上,这个数据在 MongoDB 上,看起来像这样:

{
    "_id" : ObjectId("5a337aab17030d133c11fa2f"),
    "sequenceid" : 1,
    "column1" : [//This column has weighted value 2 
        {"comodity": "a"},
        {"comodity": "d"},
        {"comodity": "c"},
        {"comodity": "b"},
   ],

    "column2" : [//This column has weighted value 2.5 
        {"comodity": "d"},
        {"comodity": "a"},
        {"comodity": "e"},
        {"comodity": "f"},
   ],

    "column3" : [//This column has weighted value 2.5
        {"comodity": "a"},
        {"comodity": "g"},
        {"comodity": "k"},
        {"comodity": "c"},
   ],
    "column4" : [//This column has weighted value 3
        {"comodity": "i"},
        {"comodity": "d"},
        {"comodity": "h"},
        {"comodity": "j"},
   ]
    "__v" : 0
}

我想要的是这样的东西,即

d  // d = 7.5 (as d appear in column 1, column 2 and column 4. so Sum its weighted value we get 7.5).
a  //a = 7 (same usecase)
c  // c = 4.5 (same usecase)
i  // i = 3 (same usecase)
h  // h = 3 (same usecase)
j  //j = 3 (same usecase)
e  //e = 2.5 (same usecase)
f  // f = 2.5 (same usecase)
g  // g = 2.5 (same usecase)
k  // k = 2.5 (same usecase)
b // b = 2 (same usecase)

感谢任何帮助

最佳答案

就您必须处理所有数据而言,我会通过对数据库的一个请求来提取旧信息

collection.find({}, ...);

然后您可以遍历每一列的值。在一个对象中,我会检查字母表是否已经在对象中,如果它是将列的值添加到它的值,如果不是,则将新字母表添加到对象

var result = {
    "sequenceid" : 1,
    "column1" : [//This column has weighted value 2 
        {"comodity": "a"},
        {"comodity": "d"},
        {"comodity": "c"},
        {"comodity": "b"},
   ],

    "column2" : [//This column has weighted value 2.5 
        {"comodity": "d"},
        {"comodity": "a"},
        {"comodity": "e"},
        {"comodity": "f"},
   ],

    "column3" : [//This column has weighted value 2.5
        {"comodity": "a"},
        {"comodity": "g"},
        {"comodity": "k"},
        {"comodity": "c"},
   ],
    "column4" : [//This column has weighted value 3
        {"comodity": "i"},
        {"comodity": "d"},
        {"comodity": "h"},
        {"comodity": "j"},
   ]
};

var columns = [
    {name: "column1", value: 2}, 
    {name: "column2", value: 2.5}, 
    {name: "column3", value: 2.5}, 
    {name: "column4", value: 3}, 
];

var total = {};

for(let column of columns) {
    for(let comodity of result[column.name]) {
        var alphabet = comodity.comodity;
        if(total[alphabet]) {
            total[alphabet] += column.value;
        } else {
            total[alphabet] = column.value;
        }
    }
}


console.log(total);

这会得到您正在寻找的结果:

{一个:7, d:7.5, c:4.5, 乙:2, e:2.5, f: 2.5, 克:2.5, k:2.5, 我:3, 小时:3, j: 3

关于node.js - 如何解决 mongodb 上特定集的重复问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47828841/

相关文章:

linux - 蒙戈 : couldn't connect to server 127. 0.0.1 :27017 at src/mongo/shell/mongo. js:145

node.js - 如何在npm start上将scss编译为css

javascript - 不同文件夹上的 Grunt : have package. json 和 Gruntfile.js

node.js - 在 mongoose mongodb 中使用 $or 返回部分文档

algorithm - 哪个图形分析依赖于图形的连接组件?

javascript - 根据特定规则对对象进行排序

algorithm - 工作机会的最优策略

node.js - 在 Mongoose 模型中使用 id 属性有危险吗?

node.js - Mongodb 查找数组的查询

python - 始终返回零文档的 Mongo 查询