这里这个语气是我附加的问题集,以图像的形式出现。现在我要解决的是:
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/