为所有文档运行MongoDB函数

时间:2018-04-25 12:28:24

标签: mongodb

我想在现有字段的基础上设置字段。像:

db.attendances.find().forEach(function(attendance) {
        var entryTime = attendance["entryTime"];
        var exitTime = attendance["exitTime"];

        if(entryTime != null) {
            var entryTimeMillis = entryTime.getTime();
            attendance["entryTimeMillis"] = entryTimeMillis;
        }

        if(exitTime != null) {
            var exitTimeMillis = exitTime.getTime();
            attendance["exitTimeMillis"] = exitTimeMillis;
        }

        db.attendances.save(attendance);
});

我在attendances集合中有大约1000万条记录。有没有办法可以更快地执行此操作,因为这需要花费大量时间来处理1000万条记录?

该功能只是将现有的ISODate字段转换为milliseconds并将其另存为另一个字段。

发表评论后,我尝试了bulkWrite

try {
    db.attendances.bulkWrite(
        [{
            updateMany : {
                "filter" : { "entryTime" : { $exists : true } },
                "update" : { $set : { "entryTimeMillis" : "$entryTime.getTime()" } }
            }
        }]
    );
} catch (e) {
    print(e);
}

但当然"$entryTime.getTime()"不正确,因为不会被评估,并且在没有"的情况下它不起作用。我该怎么办?

0 个答案:

没有答案
相关问题