微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐