从字符串值中删除空格(前导和尾随)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我使用mongoimport在mongo中导入了一个csv文件,我想从我的字符串值中删除前导和尾随空格。

是否可以直接在mongo中为所有集合使用trim函数或者我是否需要为此编写脚本?

我的收藏包含以下元素:

{
  "_id" : ObjectId("53857680f7b2eb611e843a32"),
  "category" : "Financial & Legal Services "
}

我想为所有集合应用trim函数,以便"category"不包含任何前导和尾随空格。

提问于
用户回答回答于

当它在游标方法中时,您可以在MongoDB更新命令中执行javascript:

db.collection.find({},{ "category": 1 }).forEach(function(doc) {
  db.collection.update(
    { "_id": doc._id },
    { "$set": { "category": doc.category.trim() } }
  );
})

如果您有大量记录并需要批处理,您可能需要在此处查看其他答案。

用户回答回答于

对Neil的批量操作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();

注意:我没有足够的声誉来评论,因此添加了答案

扫码关注云+社区

领取腾讯云代金券