【问题标题】:SQL Server Replace in MongoDBMongoDB 中的 SQL Server 替换
【发布时间】:2018-01-16 16:40:41
【问题描述】:

我想在投影中进行替换。就像一个 SQL Server REPLACE。我很确定我们可以在代码中处理它,但需要寻找一些 shell 命令。

这就是我所拥有的

db.OrderHistoryHeader.aggregate([  
   {
      $project:{
        "_id":0,
        "OrderNo":1 // I want to do Replace(OrderNo,'XYZ','ABC')
      }
   }
],
{
allowDiskUse:true
}).pretty();

【问题讨论】:

  • @micki 我们可以将“OrderNo”的值传递给存储的 javascript 函数并取回该值对吗?
  • @Veeram 请查看以上评论
  • 你为什么要这样做?你可以在代码中做所有事情。
  • @Krishna 我敢打赌,您在 SQL 方面想的太多了。 MongoDB Aggregation Framework 是执行此类数据转换的正确工具,无需在服务器端存储 JS 代码。

标签: sql sql-server mongodb


【解决方案1】:

目前没有内置运算符,但您可以将 $indexOfBytes$substr$concat 结合使用。

db.OrderHistoryHeader.aggregate([
     {
       $addFields:
          {
            index: { $indexOfBytes: [ "$OrderNo", "XYZ" ] },
          }
      },
      {
        $project: {
            OrderNo: {
                $concat: [ 
                    { $substr: [ "$OrderNo", 0, "$index" ] },
                    "ABC",
                    { $substr: [ "$OrderNo", { $add: [3, "$index"] }, -1 ] }
                ]
            }
        }
      },
      {
        $project: {
            index: 0
        }
      }
   ])

其中3 是被替换文本的长度。

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 2016-07-11
    • 2022-11-22
    • 2011-12-12
    • 2020-07-04
    • 1970-01-01
    • 2010-11-29
    • 2018-12-19
    相关资源
    最近更新 更多