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ànhMô 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ế.