将Javascript数组值放入Mongodb集合值

我有一个用均值填充的Javascript数组,我想将它们插入一个名为“ mean”的字段的集合中.字段“均值”已经存在并且已经包含值,现在我要使用数组的值更新它们.更具体地说:我希望数组的第一个值在“ mean”字段下的第一个Document中,依此类推.我有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);

相关文章

MongoTemplate 是Spring Data MongoDB 中的一个核心类,为 S...
笔者今天要分享的是一个项目重构过程中如何将数据库选型由原...
mongodb/mongoTemplate.upsert批量插入更新数据的实现
进入官网下载官网安装点击next勾选同意,点击next点击custom...
头歌 MongoDB实验——数据库基本操作
期末考试复习总结