【问题标题】:remove "\n" from values fields results in mongo db从值字段中删除“\n”会导致 mongodb
【发布时间】:2019-02-24 21:01:58
【问题描述】:

如何从 mongo db 中搜索值的结果中删除 "\n" 而不将其从 mongo db 的值中删除? 我需要你的帮助!

【问题讨论】:

  • 感谢 sam 的帮助,但是这个函数从一开始就删除了“\n”,我的值在中间包含“\n”:(:(你能帮我更多吗!!
  • 得到结果后,您可以使用正则表达式对其进行操作以删除 '\n'
  • 感谢您的帮助

标签: mongodb mongoose mongodb-query aggregation-framework


【解决方案1】:

以 2 个文档为例:

db.testcol.insert({
    textstr: "Hello World\nBye World\nHello World\n"
})
db.testcol.insert({
    textstr: "Testing\n123\nTesting\n"
})

db.testcol.find({}, {_id: 0, textstr: 1}).forEach(function(e, i) {
    e.textstr=e.textstr.replace(new RegExp('\n', 'g'), "");
    printjson(e);
});

将输出:

{
    "textstr" : "Hello WorldBye WorldHello World"
}
{
    "textstr" : "Testing123Testing"
}

值得注意的是,如果您想将 /n 替换为另一个字符,例如空格,您可以通过将 replace 的第二个参数更改为您选择的字符串来实现。

【讨论】:

    【解决方案2】:

    你可以试试下面的聚合

    db.collection.aggregate([
      { "$project": {
        "textstr": {
          "$reduce": {
            "input": { "$split": ["$textstr", "\n"] },
            "initialValue": "",
            "in": { "$concat": ["$$this", " ", "$$value"] }
          }
        }
      }}
    ])
    

    【讨论】:

    • 谢谢安东尼,但是当我尝试它时,我收到一条消息,指出“减少”是无效的操作符:(!!任何建议请??
    • 你的mongodb版本是多少?
    • 我怎么知道我用的Robomongo 1.0 R-C1的版本!!我检查了 mongo --version 但没有结果!!
    • 运行db.version()
    • 非常感谢安东尼先生,我会努力做到的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2019-06-09
    • 2021-07-25
    相关资源
    最近更新 更多