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