gpt4 book ai didi

javascript - 将 Javascript 数组值放入 M​​ongodb 集合值中

转载 作者:可可西里 更新时间:2023-11-01 09:33:38 25 4
gpt4 key购买 nike

我有一个 Javascript 数组,其中填充了平均值,我想将它们插入到一个名为“mean”的字段的集合中。字段“mean”已经存在并且已经有值,现在我想用数组的值更新它们。更具体地说:我希望数组的第一个值位于“mean”字段下的第一个文档中,依此类推。我有 98 个文档,数组的长度也是 98。

集合看起来像这样,名称为“cmean”:

{ 
"_id" : "000",
"mean" : 33.825645389680915

}
{
"_id" : "001",
"mean" : 5.046005719077798

}

和数组:

[
33.89923155012405,
5.063347068609219
]

最佳答案

您可以使用 forEach 方法对数组进行迭代并更新集合。使用索引获取要在更新查询中使用的 _id,如下所示:

meansArray.forEach(function(mean, idx) {
var id = db.cmean.find({}).skip(idx).limit(1).toArray()[0]["_id"];
db.cmean.updateOne(
{ "_id": id },
{ "$set": { "mean": mean } },
{ "upsert": true }
);
});

对于大型集合,您可以使用 bulkWrite 简化数据库性能如下:

var ops = [];

meansArray.forEach(function(mean, idx) {
var id = db.cmean.find({}).skip(idx).limit(1).toArray()[0]["_id"];
ops.push({
"updateOne": {
"filter": { "_id": id },
"update": { "$set": { "mean": mean } },
"upsert": true
}
});

if (ops.length === 1000 ) {
db.cmean.bulkWrite(ops);
ops = [];
}
})

if (ops.length > 0)
db.cmean.bulkWrite(ops);

关于javascript - 将 Javascript 数组值放入 M​​ongodb 集合值中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49297478/

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