Di MongoDB, $ltrim
operator pipa agregasi menghapus spasi dari awal string. Ini termasuk karakter nol.
Itu juga dapat menghapus karakter apa pun yang ditentukan. Misalnya, Anda dapat menggunakannya untuk menghapus semua karakter tanda hubung (-
) dari awal string.
Contoh
Misalkan kita memiliki koleksi yang disebut pets
dengan dokumen berikut:
{ "_id" : 1, "name" : "-Wag", "type" : " Dog ", "weight" : 20 }
Kita dapat melihat bahwa type
bidang menyertakan spasi putih di kedua sisi kata Dog
. Kita dapat menggunakan $ltrim
operator untuk mengembalikan bidang itu dengan spasi dihapus dari bagian kiri string.
Contoh:
db.pets.aggregate([
{
$project: {
name: 1,
type: { $ltrim: { input: "$type" } }
}
}
])
Hasil:
{ "_id" : 1, "name" : "-Wag", "type" : "Dog " }
Seperti yang diharapkan, type
bidang telah dikembalikan tanpa spasi di awal. Spasi di bagian akhir masih tersisa.
Anda juga dapat menggunakan $rtrim
operator untuk memangkas bagian kanan string, dan $trim
operator untuk memotong kedua sisi string.
Ada beberapa karakter yang dianggap MongoDB sebagai karakter spasi. Lihat Karakter Spasi MongoDB untuk daftar lengkapnya.
Potong Karakter Lain
$ltrim
operator menerima chars
parameter yang memungkinkan Anda menentukan karakter mana yang akan dipotong.
Contoh:
db.pets.aggregate([
{
$project: {
name: { $ltrim: { input: "$name", chars: "-" } }
}
}
])
Hasil:
{ "_id" : 1, "name" : "Wag" }
Dalam hal ini kami menyertakan chars
parameter dengan tanda hubung (-
), yang mengakibatkan tanda hubung dihapus dari awal kata.
Potong Beberapa Karakter
Anda dapat memangkas beberapa karakter dengan memasukkan semuanya ke dalam chars
argumen.
Contoh:
db.pets.aggregate([
{
$project: {
name: { $ltrim: { input: "$name", chars: "W-" } }
}
}
])
Hasil:
{ "_id" : 1, "name" : "ag" }
Dalam hal ini, saya memberikan dua karakter sebagai chars
saya argumen, dan dua dari karakter itu kebetulan berada di awal string. Oleh karena itu, kedua karakter tersebut dipangkas.
Namun, berhati-hatilah saat melakukan ini. Inilah yang terjadi jika saya memasukkan semua karakter:
db.pets.aggregate([
{
$project: {
name: { $ltrim: { input: "$name", chars: "W-ag" } }
}
}
])
Hasil:
{ "_id" : 1, "name" : "" }
Seluruh string telah menghilang. Ini telah memangkas tidak hanya -
dan W
dari string, tetapi juga telah menghapus a
dan g
karakter.
Memotong Angka
$ltrim
operator bekerja pada string. Jika kita mencoba memangkas weight
lapangan, kami mendapatkan kesalahan. Ini karena weight
bidang adalah angka, bukan string.
db.pets.aggregate([
{
$project: {
name: 1,
weight: { $ltrim: { input: "$weight", chars: "2" } }
}
}
])
Hasil:
Error: command failed: { "ok" : 0, "errmsg" : "$ltrim requires its input to be a string, got 20 (of type double) instead.", "code" : 50699, "codeName" : "Location50699" } : aggregate failed : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/assert.js:18:14 [email protected]/mongo/shell/assert.js:618:17 [email protected]/mongo/shell/assert.js:708:16 [email protected]/mongo/shell/db.js:266:5 [email protected]/mongo/shell/collection.js:1046:12 @(shell):1:1
Kesalahan memberitahu kami bahwa kami memberikan ganda, dan bahwa $ltrim
operator membutuhkan inputnya berupa string.
Jika kami benar-benar ingin menghapus 2, kami harus mengubahnya menjadi string terlebih dahulu. Kita dapat melakukannya dengan $convert
atau $toString
operator.
Contoh:
db.pets.aggregate([
{
$project: {
name: 1,
weight: { $ltrim: { input: { $toString: "$weight" }, chars: "2" } }
}
}
])
Hasil:
{ "_id" : 1, "name" : "-Wag", "weight" : "0" }
Kita dapat mengembalikannya menjadi dua kali lipat dengan menggunakan $convert
atau $toDouble
operator.
Contoh lengkap:
db.pets.aggregate([
{
$project: {
name: 1,
weight: { $toDouble: { $ltrim: { input: { $toString: "$weight" }, chars: "2" } } }
}
}
])
Hasil:
{ "_id" : 1, "name" : "-Wag", "weight" : 0 }