MongoDB 4.4 đã giới thiệu chín toán tử đường ống tổng hợp mới, bao gồm hai toán tử mới để tìm và thay thế một chuỗi con.
Hai toán tử mới cho phép bạn tìm và thay thế một chuỗi con là $replaceOne và $replaceAll toán tử.
Đây là những gì mỗi nhà điều hành làm:
Nhà điều hành| Mô tả | |
|---|---|
$replaceOne | Thay thế phiên bản đầu tiên của một chuỗi tìm kiếm trong một chuỗi đầu vào bằng một chuỗi thay thế. |
$replaceAll | Thay thế tất cả các bản sao của một chuỗi tìm kiếm trong một chuỗi đầu vào bằng một chuỗi thay thế. |
Sự khác biệt duy nhất giữa các toán tử này là $replaceOne thay thế cho đầu tiên phiên bản của chuỗi con, trong khi $replaceAll thay thế tất cả các phiên bản của chuỗi con.
$replaceOne Nhà điều hành
Giả sử chúng ta có một bộ sưu tập được gọi là products với tài liệu sau:
{
"_id" : 1,
"product" : "Left Handed Screwdriver with Left Handed Carry Case"
}
Chúng ta có thể sử dụng $replaceOne toán tử để thay thế phiên bản đầu tiên của chuỗi con Left Handed với một chuỗi khác:
db.products.aggregate([
{
$project:
{
product: { $replaceOne: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty() Kết quả:
{
"_id" : 1,
"product" : "Ambidextrous Screwdriver with Left Handed Carry Case"
}
Lưu ý rằng thực tế có hai phiên bản của chuỗi con (Left Handed ) nhưng chỉ có trường hợp đầu tiên được thay thế.
$replaceAll Nhà điều hành
Trong ví dụ trước, chúng tôi đã thay thế phiên bản đầu tiên của chuỗi con.
Bây giờ hãy sử dụng $replaceAll toán tử để thay thế tất cả các phiên bản của chuỗi con:
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty() Kết quả:
{
"_id" : 1,
"product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case"
}
Lần này cả hai phiên bản của chuỗi con (Left Handed ) đã được thay thế.