簡體   English   中英

將Javascript數組值放入Mongodb集合值

[英]Put Javascript Array Values into Mongodb Collection Values

我有一個填充了均值的Javascript數組,我想將它們插入到一個名為“mean”的字段的集合中。 字段“mean”已經存在並且已經存在值,現在我想用Array的值更新它們。 更具體一點:我希望數組的第一個值位於“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);
update({"_id": id}, $set: {"mean": myArray}, function(res, err) { ... });

如果您使用的是mongoose,則還必須將數據模型從字符串更改為數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM