我已经使用mongoimport在mongo中导入了一个csv文件,我想从字符串值中删除前导空格和尾随空格。
是否可以直接在mongo中对所有集合使用trim函数,或者我是否需要为此编写脚本?
我的集合包含如下元素:
{
"_id" : ObjectId("53857680f7b2eb611e843a32"),
"category" : "Financial & Legal Services "
}
我想对所有的集合应用trim函数,这样"category"
就不会包含任何前导和尾随空格。
发布于 2015-01-04 23:25:55
对Neil for bulk operations api的回答进行了小小的更正
它是
initializeOrderedBulkOp
不
initializeBulkOrderedOp
你也错过了
counter++;
在forEach中,所以总结一下
var counter = 1;
var bulk = db.collection.initializeOrderedBulkOp();
db.collection.find({ "category": /^\s+|\s+$/ },{ "category": 1}).forEach(
function(doc) {
bulk.find({ "_id": doc._id }).update({
"$set": { "category": doc.category.trim() }
});
if ( counter % 1000 == 0 ) {
bulk.execute();
counter = 1;
}
counter++;
}
);
if ( counter > 1 )
bulk.execute();
注意:我没有足够的名气来评论,因此添加了一个答案
发布于 2017-10-04 07:36:01
您可以在游标方法中执行MongoDB update命令中的javascript:
db.collection.find({},{ "category": 1 }).forEach(function(doc) {
db.collection.update(
{ "_id": doc._id },
{ "$set": { "category": doc.category.trim() } }
);
})
如果您有大量的记录,并且需要批量处理,那么您可能需要查看此处的其他答案。
https://stackoverflow.com/questions/23903785
复制相似问题