gpt4 book ai didi

javascript - 在 mongodb 中使用 javascript 区分列

转载 作者:可可西里 更新时间:2023-11-01 10:42:24 24 4
gpt4 key购买 nike

我有一个包含多个列的数据库。我试图区分一列,因此我可以添加第二列的数字。我正在创建一个新的集合(表)。例如:

states     race  race_1  geo_type
Alabama 1 3 state
Alabama 4 1 state
Alabama 4 1 state
Alaska 5 1 state
Alaska 2 1 state

所以输出应该是。

states     race  race_1  geo_type
Alabama 9 5 state
Alaska 7 2 state

我正在使用 Javascript 来处理这个问题。这是我目前所拥有的:

db.race_collection.distinct('states').forEach(function(state_lookup){
var race_sum = 0;

db.race_collection.find({'states': state_lookup}).forEach(function(doc){
if (doc['race']) {
race_sum = race_sum + doc['race'];
}
if (doc['race'] != null)
db.indicator_collection.insert({
'race': race_sum,
'state': state_lookup
})
})
})

我尝试在 Javascript 中寻找对此的答案,但找不到任何接近的答案。我还没有转到“race_1”,因为我什至无法让“race”相加。如果需要,您可以撕开我的代码。我使用 Javascript 来解决这个问题很重要。提前致谢。

最佳答案

您可以使用聚合框架来获得您想要的结果。运行以下聚合管道,它将使用 $groupstates 键对所有文档进行分组 并使用 $sum 计算其他字段的总计 运算符。选择分组中的其他字段 geo_type 是使用 $first 完成的 运算符。

另一个管道阶段 $project将替换从 $group 返回的 _id 管道并将新字段与其他字段一起添加。

然后使用 $out 将聚合管道返回的文档写入另一个集合。 运算符:

db.race_collection.aggregate([  
{
"$group": {
"_id": "$states",
"race": { "$sum": "$race" },
"race_1": { "$sum": "$race_1" },
"geo_type": { "$first": "$geo_type" }
}
},
{
"$project": {
"_id": 0,
"state": "$_id",
"race": 1,
"race_1": 1,
"geo_type": 1
}
},
{ "$out": "indicator_collection" }
])

关于javascript - 在 mongodb 中使用 javascript 区分列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36455137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com