需求
需要批量处理数据库中的某一字段为大写
语句
方式一 失败 应该也是函数不支持 toUpper只能聚合时使用
//批量处理兑换码大写 失败
db.gift_card.find({cdKey:{$exists:true}}).forEach(
function(item){
print({$toUpper:item.cdKey})
db.gift_card.update(
{_id:item._id},
{
$set:{"cdKey":{$toUpper:item.cdKey}}
}
)
}
);
方式二 失败
> db.gift_card.update({cdKey:{$exists:true},status:0},{$set:{"cdKey":{$toUpper:"$cdKey"}}},false,true)
WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 52,
"errmsg" : "The dollar ($) prefixed field '$toUpper' in 'cdKey.$toUpper' is not valid for storage."
}
})
原因是update中不支持$toUpper 该操作符是管道操作符
方案三 成功
通过js 函数转换大写在进行赋值 toLowerCase( ) .toUpperCase();
db.gift_card.find({cdKey:{$exists:true},status:0}).forEach(
function(item){
var upcaseName = item.cdKey;
var upperCase = upcaseName.toUpperCase();
print(upcaseName +" --大写--> "+upperCase )
db.gift_card.update(
{_id:item._id},
{
$set:{"cdKey": upperCase}
}
)
}
);