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

MongoDB $ tách

Trong MongoDB, $split toán tử đường ống tổng hợp chia một chuỗi thành một mảng các chuỗi con dựa trên dấu phân cách.

Dấu phân tách được xóa khỏi chuỗi và các chuỗi con được thêm dưới dạng phần tử vào mảng.

Để sử dụng $split , bạn chỉ định chuỗi và dấu phân cách.

Nếu không tìm thấy dấu phân tách trong chuỗi, thì chuỗi gốc sẽ được trả về dưới dạng mục duy nhất trong mảng.

Ví dụ 1

Giả sử chúng ta có một bộ sưu tập được gọi là test với tài liệu sau:

{ "_id" : 1, "data" : "March-18-2020" }

Chúng ta có thể sử dụng $split để tách data trường ở dấu gạch ngang.

db.test.aggregate(
   [
     { $match: { _id: 1 } },
     {
       $project:
          {
            _id: 0,
            result: { $split: [ "$data", "-" ] }
          }
     }
   ]
)

Kết quả:

{ "result" : [ "March", "18", "2020" ] }

Ví dụ 2

Giả sử chúng ta có tài liệu sau:

{ "_id" : 2, "data" : "Sydney, Australia, NSW 2000" }

Chúng ta có thể sử dụng $split để tách trường dữ liệu dựa trên dấu phẩy và dấu cách:

db.test.aggregate(
   [
     { $match: { _id: 2 } },
     {
       $project:
          {
            _id: 0,
            result: { $split: [ "$data", ", " ] }
          }
     }
   ]
)

Kết quả:

{ "result" : [ "Sydney", "Australia", "NSW 2000" ] }

Ví dụ 3

Đây là một ví dụ khác. Lần này chúng ta sẽ chia chuỗi dựa trên khoảng cách giữa mỗi từ.

Tài liệu mẫu:

{ "_id" : 3, "data" : "Homer Jay Einstein" }

Hãy chia nó ra:

db.test.aggregate(
   [
     { $match: { _id: 3 } },
     {
       $project:
          {
            _id: 0,
            result: { $split: [ "$data", " " ] }
          }
     }
   ]
)

Kết quả:

{ "result" : [ "Homer", "Jay", "Einstein" ] }

Loại dữ liệu sai

Hai đối số phải là chuỗi. Cung cấp loại dữ liệu sai dẫn đến lỗi.

Ví dụ:

db.test.aggregate(
   [
     { $match: { _id: 1 } },
     {
       $project:
          {
            _id: 0,
            result: { $split: [ "$data", 18 ] }
          }
     }
   ]
)

Kết quả:

Error: command failed: {
	"ok" : 0,
	"errmsg" : "$split requires an expression that evaluates to a string as a second argument, found: double",
	"code" : 40086,
	"codeName" : "Location40086"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:639:17
[email protected]/mongo/shell/assert.js:729:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1058:12
@(shell):1:1

Như thông báo lỗi nêu rõ, $split requires an expression that evaluates to a string as a second argument, found: double .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor và DBRefs

  2. Những thông số nào được chuyển cho lệnh gọi lại Mongoose

  3. Làm cách nào để tìm kiếm một đối tượng bằng ObjectId của nó trong bảng điều khiển mongo?

  4. Mongoose Giá trị duy nhất trong mảng đối tượng lồng nhau

  5. Có cách nào để in đầu ra shell MongoDB 'đẹp' ra một tệp không?