Arrays 如何用数组替换mongodb集合中的字符串

Arrays 如何用数组替换mongodb集合中的字符串,arrays,mongodb,mongodb-query,Arrays,Mongodb,Mongodb Query,我的FoodRecord记录包含以下内容: "_modifierRecords" : [ "com.domain.data.REM.FoodModifierRecord:57919e6930049c15986e7c05" "com.domain.data.REM.FoodModifierRecord:57919e6930049c15986e7c06" ], "_discountModifierRecords" : [ ], "_salesRecord" : "com.dom

我的
FoodRecord
记录包含以下内容:

"_modifierRecords" : [
    "com.domain.data.REM.FoodModifierRecord:57919e6930049c15986e7c05"
    "com.domain.data.REM.FoodModifierRecord:57919e6930049c15986e7c06"
], 
"_discountModifierRecords" : [

], 
"_salesRecord" : "com.domain.data.REM.SalesRecord:57919e6930049c15986e7c01"
我需要将
com.domain.data.REM.
替换为
com.domain.data.
如果它们存在于上述3个字段中

这就是我目前的情况,但我遇到了一些问题:

var operations = [];
db.FoodRecord.find().forEach(function(doc) {
    var operation = {
        updateOne: { 
            filter: { '_id': doc._id }, 
            update: { 
                '$set': { '_salesRecord': doc._salesRecord.replace('com.domain.data.REM.SalesRecord:', 'com.domain.data.SalesRecord:'),
                  '_modifierRecords.$' : doc._modifierRecords.$.replace('com.domain.data.REM.FoodModifierRecord:', 'com.domain.data.FoodModifierRecord:') }
            }
        }
    };
    operations.push(operation);
})

operations.push({ 
    ordered: true, 
    writeConcern: { w: "majority", wtimeout: 5000 } 
})

db.FoodRecord.bulkWrite(operations, { ordered : false });

这个解决方案似乎有效,但可能不是最佳方案

db.FoodRecord.find(/* your query */).forEach(function(e,i){
    var newArr = [];
    e._salesRecord.forEach(function(e,i) {
         newArr.push(e.replace('REM.SalesRecord','SalesRecord'));
    });
    e._salesRecord = newArr;
    newArr = [];
    e._modifierRecords.forEach(function(e,i) {
         newArr.push(e.replace('REM.FoodModifierRecord','FoodModifierRecord'));
    });
    e._modifierRecords = newArr;
    db.FoodRecord.save(e);
});

你的MongoDB版本是什么?我相信目前我的db版本是3.2.8