SQL Server Replace in MongoDB



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

这是我所拥有的

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

目前没有内置运算符,但您可以将$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是要替换的文本的长度。

您可以使用 replaceOne 方法db.collection.replaceOne(filter, replacement, options(

从文档:行为replaceOne(( 使用替换文档替换集合中与筛选器匹配的第一个匹配文档。

更新插入如果 upsert: true 并且没有文档与过滤器匹配,db.collection.replaceOne(( 会基于替换文档创建一个新文档。

最新更新