MongoDB 中的 SQL Server 替换

Posted

技术标签:

【中文标题】MongoDB 中的 SQL Server 替换【英文标题】:SQL Server Replace in MongoDB 【发布时间】: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 代码。 【参考方案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 是被替换文本的长度。

【讨论】:

以上是关于MongoDB 中的 SQL Server 替换的主要内容,如果未能解决你的问题,请参考以下文章

替换 SQL Server 2008 中的最后一个字符

替换SQL Server表列中的文本

SQL Server GUID 数据迁移至MongoDB后怎样查看?

在 SQL Server 中替换整个表中的字符

如何从 sql server 将数据导入 mongodb?

如何替换sql server中的第n个字符