MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB $ trim

Trong MongoDB, $trim toán tử đường ống tổng hợp loại bỏ khoảng trắng từ đầu và cuối của một chuỗi. Điều này bao gồm ký tự rỗng.

Nó cũng có thể loại bỏ bất kỳ ký tự nào được chỉ định. Ví dụ:bạn có thể sử dụng nó để xóa tất cả các ký tự gạch nối (- ) hoặc dấu chấm (. ) hoặc tất cả s ký tự, v.v.

Ví dụ

Giả sử chúng ta có một bộ sưu tập có tên là pets với tài liệu sau:

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

Chúng ta có thể thấy rằng type trường bao gồm khoảng trắng trên cả hai mặt của từ Dog . Chúng ta có thể sử dụng $trim toán tử để trả về trường đó với khoảng trắng đã bị loại bỏ.

Ví dụ:

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

Kết quả:

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

Như mong đợi, loại type trường đã được trả lại mà không có khoảng trắng.

Bạn cũng có thể sử dụng $ltrim toán tử để cắt phần bên trái của chuỗi và $rtrim toán tử để cắt phía bên phải của chuỗi.

Thực tế có khá nhiều ký tự mà MongoDB cho là ký tự khoảng trắng. Xem Các ký tự khoảng trắng trong MongoDB để biết danh sách đầy đủ.

Cắt bỏ các ký tự khác

$trim toán tử chấp nhận chars cho phép bạn chỉ định các ký tự cần cắt.

Ví dụ:

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

Kết quả:

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

Nó đã xóa cả g ký tự ở cuối từ.

Cắt nhiều ký tự

Bạn có thể cắt nhiều ký tự bằng cách đưa tất cả chúng vào chars đối số.

Ví dụ:

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

Kết quả:

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

Trong trường hợp này, tôi đã cung cấp ba ký tự làm chars của mình và hai trong số các ký tự đó đã xảy ra ở một trong hai phần cuối của chuỗi. Do đó, hai ký tự đó đã được lược bớt. Trên thực tế, ba ký tự được cắt - một ký tự W và hai g ký tự.

Tuy nhiên, hãy cẩn thận khi làm điều này. Đây là những gì sẽ xảy ra khi tôi thay thế z với a trong các ký tự type đối số:

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

Kết quả:

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

Toàn bộ chuỗi đã biến mất. Nó không chỉ cắt bớt Wg từ mỗi đầu của chuỗi, nhưng nó cũng đã cắt bớt a từ chuỗi - mặc dù nó nằm ở giữa chuỗi.

Số cắt tỉa

$trim toán tử hoạt động trên chuỗi. Nếu chúng tôi cố gắng cắt weight trường, chúng tôi nhận được một lỗi. Điều này là do weight trường là một số, không phải là một chuỗi.

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

Kết quả:

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

Lỗi cho chúng tôi biết rằng chúng tôi đã cung cấp một mã gấp đôi, mặc dù $trim toán tử yêu cầu đầu vào của nó là một chuỗi.

Nếu chúng tôi thực sự muốn xóa số 0, trước tiên chúng tôi cần chuyển nó thành chuỗi. Chúng tôi có thể làm điều đó với $convert hoặc $toString nhà điều hành.

Ví dụ:

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

Kết quả:

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

Chúng tôi có thể lấy nó trở lại gấp đôi bằng cách sử dụng $convert hoặc $toDouble nhà điều hành.

Ví dụ đầy đủ:

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

Kết quả:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cơ sở dữ liệu tài liệu:Dữ liệu dự phòng, tài liệu tham khảo, v.v. (cụ thể là MongoDB)

  2. Cách lưu trữ thông tin không gian địa lý trong mongoDB

  3. Sync MongoDB Qua ssh

  4. Các phương thức find () và findOne () trong MongoDB hiển thị các kết quả khác nhau

  5. Cách triển khai ClusterControl trên AWS để quản lý cơ sở dữ liệu đám mây của bạn