MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB $trim

Di MongoDB, $trim operator pipa agregasi menghapus spasi putih dari awal dan akhir string. Ini termasuk karakter nol.

Itu juga dapat menghapus karakter apa pun yang ditentukan. Misalnya, Anda dapat menggunakannya untuk menghapus semua karakter tanda hubung (- ) atau titik (. ) atau semua s karakter, dll.

Contoh

Misalkan kita memiliki koleksi yang disebut pets dengan dokumen berikut:

{ "_id" : 1, "name" : "Wagg", "type" : " Dog    ", "weight" : 20 }

Kita dapat melihat bahwa type bidang menyertakan spasi putih di kedua sisi kata Dog . Kita dapat menggunakan $trim operator untuk mengembalikan bidang itu dengan spasi dihapus.

Contoh:

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      type: { $trim: { input: "$type" } } 
    } 
  }
])

Hasil:

{ "_id" : 1, "name" : "Wagg", "type" : "Dog" }

Seperti yang diharapkan, type bidang telah dikembalikan tanpa spasi.

Anda juga dapat menggunakan $ltrim operator untuk memangkas bagian kiri string, dan $rtrim operator untuk memangkas sisi kanan string.

Sebenarnya ada beberapa karakter yang dianggap MongoDB sebagai karakter spasi. Lihat Karakter Spasi MongoDB untuk daftar lengkapnya.

Potong Karakter Lain

$trim operator menerima chars parameter yang memungkinkan Anda menentukan karakter mana yang akan dipotong.

Contoh:

db.pets.aggregate([
  { 
    $project: {
      name: { $trim: { input: "$name", chars: "g" } } 
    } 
  }
])

Hasil:

{ "_id" : 1, "name" : "Wa" }

Itu telah menghapus keduanya g karakter dari akhir kata.

Potong Beberapa Karakter

Anda dapat memangkas beberapa karakter dengan memasukkan semuanya ke dalam chars argumen.

Contoh:

db.pets.aggregate([
  { 
    $project: { 
      name: { $trim: { input: "$name", chars: "Wgz" } } 
    } 
  }
])

Hasil:

{ "_id" : 1, "name" : "a" }

Dalam hal ini, saya memberikan tiga karakter sebagai chars saya argumen, dan dua dari karakter itu kebetulan berada di kedua ujung string. Oleh karena itu, kedua karakter tersebut dipangkas. Sebenarnya, tiga karakter yang dipangkas – satu W dan dua g karakter.

Namun, berhati-hatilah saat melakukan ini. Inilah yang terjadi ketika saya mengganti z dengan a di chars argumen:

db.pets.aggregate([
  { 
    $project: { 
      name: { $trim: { input: "$name", chars: "Wga" } } 
    } 
  }
])

Hasil:

{ "_id" : 1, "name" : "" }

Seluruh string telah menghilang. Itu tidak hanya memangkas W dan g dari setiap ujung string, tetapi juga telah memangkas a dari string – meskipun berada di tengah string.

Memotong Angka

$trim 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: { $trim: { input: "$weight", chars: "0" } } 
    } 
  }
])

Hasil:

Error: command failed: {
	"ok" : 0,
	"errmsg" : "$trim 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, meskipun $trim operator membutuhkan inputnya berupa string.

Jika kita benar-benar ingin menghapus nol, kita harus mengubahnya menjadi string terlebih dahulu. Kita dapat melakukannya dengan $convert atau $toString operator.

Contoh:

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      weight: { $trim: { input: { $toString: "$weight" }, chars: "0" } }
    }
  }
])

Hasil:

{ "_id" : 1, "name" : "Wagg", "weight" : "2" }

Kita dapat mengembalikannya menjadi dua kali lipat dengan menggunakan $convert atau $toDouble operator.

Contoh lengkap:

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      weight: { $toDouble: { $trim: { input: { $toString: "$weight" }, chars: "0" } } }
    }
  }
])

Hasil:

{ "_id" : 1, "name" : "Wagg", "weight" : 2 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Gabungkan teks lengkap dengan indeks lainnya

  2. Menghubungkan ke MongoDB Atlas menggunakan Golang mgo:Persistent no reachable server to replika set

  3. Metode Tanggal MongoDB ()

  4. Bagaimana cara mengatasi ClassNotFoundException:com.mongodb.connection.BufferProvider?

  5. Dasar-dasar Otomasi Basis Data MongoDB Menggunakan Chef