MongoDB 4.4では、サブストリングを検索して置換するための2つの新しい演算子を含む、9つの新しい集約パイプライン演算子が導入されました。
サブストリングを見つけて置き換えることができる2つの新しい演算子は、$replaceOneです。 および$replaceAll 演算子。
各オペレーターの機能は次のとおりです。
| オペレーター | 説明 |
|---|---|
$replaceOne | 入力文字列の検索文字列の最初のインスタンスを置換文字列に置き換えます。 |
$replaceAll | 入力文字列内の検索文字列のすべてのインスタンスを置換文字列に置き換えます。 |
これらの演算子の唯一の違いは、$replaceOne 最初のを置き換えます サブストリングのインスタンス、$replaceAll すべてを置き換えます サブストリングのインスタンス。
$replaceOne オペレーター
productsというコレクションがあるとします。 次のドキュメントで:
{
"_id" : 1,
"product" : "Left Handed Screwdriver with Left Handed Carry Case"
}
$replaceOneを使用できます サブストリングLeft Handedの最初のインスタンスを置き換える演算子 別の文字列で:
db.products.aggregate([
{
$project:
{
product: { $replaceOne: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty() 結果:
{
"_id" : 1,
"product" : "Ambidextrous Screwdriver with Left Handed Carry Case"
}
サブストリングのインスタンスが実際には2つあることに注意してください(Left Handed )ただし、最初のインスタンスのみが置き換えられました。
$replaceAll オペレーター
前の例では、部分文字列の最初のインスタンスを置き換えました。
それでは、$replaceAllを使用しましょう すべてを置き換える演算子 サブストリングのインスタンス:
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty() 結果:
{
"_id" : 1,
"product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case"
}
今回は、サブストリングの両方のインスタンス(Left Handed )が置き換えられました。