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

MongoDB $ reverseArray

Trong MongoDB, $reverseArray toán tử đường ống tổng hợp đảo ngược thứ tự của các mục trong một mảng.

Nó chấp nhận một biểu thức mảng làm đối số và trả về một mảng có các phần tử theo thứ tự ngược lại.

Ví dụ

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

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "L" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "XS", "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "M", "L" ] }

Chúng ta có thể sử dụng $reverseArray toán tử để đảo ngược thứ tự của các phần tử mảng đó.

Ví dụ:

db.products.aggregate(
   [
     { $match: { _id: { $in: [ 1, 2, 3 ] } } },
     {
       $project:
          {
            _id: 0,
            sizes: 1,
            reversed: { $reverseArray: [ "$sizes" ] }
          }
     }
   ]
)

Kết quả:

{ "sizes" : [ "S", "M", "L" ], "reversed" : [ "L", "M", "S" ] }
{ "sizes" : [ "XS", "S", "L", "XL" ], "reversed" : [ "XL", "L", "S", "XS" ] }
{ "sizes" : [ "M", "L" ], "reversed" : [ "L", "M" ] }

Mảng trống

Chuyển một mảng trống sẽ trả về một mảng trống.

Tài liệu mẫu:

{ "_id" : 4, "prod" : "Zap", "sizes" : [ ] }

Áp dụng $reverseArray :

db.products.aggregate(
   [
     { $match: { _id: { $in: [ 4 ] } } },
     {
       $project:
          {
            _id: 0,
            sizes: 1,
            reversed: { $reverseArray: [ "$sizes" ] }
          }
     }
   ]
)

Kết quả:

{ "sizes" : [ ], "reversed" : [ ] }

Giá trị rỗng

Chuyển giá trị null trả về null .

Tài liệu mẫu:

{ "_id" : 5, "prod" : "Tap", "sizes" : null }

Áp dụng $reverseArray :

db.products.aggregate(
   [
     { $match: { _id: { $in: [ 5 ] } } },
     {
       $project:
          {
            _id: 0,
            sizes: 1,
            reversed: { $reverseArray: [ "$sizes" ] }
          }
     }
   ]
)

Kết quả:

{ "sizes" : null, "reversed" : null }

Các trường bị thiếu

Áp dụng $reverseArray đến một trường không tồn tại trong tài liệu dẫn đến null được trả lại.

Tài liệu mẫu:

{ "_id" : 6, "prod" : "Map" }

Áp dụng $reverseArray :

db.products.aggregate(
   [
     { $match: { _id: { $in: [ 6 ] } } },
     {
       $project:
          {
            _id: 0,
            sizes: 1,
            reversed: { $reverseArray: [ "$sizes" ] }
          }
     }
   ]
)

Kết quả:

{ "reversed" : null }

Loại dữ liệu sai

Áp dụng $reverseArray đến một trường không phân giải thành một mảng dẫn đến lỗi.

Tài liệu mẫu:

{ "_id" : 7, "prod" : "Box", "sizes" : "XXL" }

Áp dụng $reverseArray :

db.products.aggregate(
   [
     { $match: { _id: { $in: [ 7 ] } } },
     {
       $project:
          {
            _id: 0,
            sizes: 1,
            reversed: { $reverseArray: [ "$sizes" ] }
          }
     }
   ]
)

Kết quả:

uncaught exception: Error: command failed: {
	"ok" : 0,
	"errmsg" : "The argument to $reverseArray must be an array, but was of type: string",
	"code" : 34435,
	"codeName" : "Location34435"
} : 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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tổng quan về MongoDB và Cân bằng tải

  2. Tổng quan về các giao dịch ACID nhiều tài liệu trong MongoDB và cách sử dụng chúng

  3. Tìm tài liệu có trường mảng chứa ít nhất n phần tử của một mảng nhất định

  4. Có thể truy vấn MongoDB nhiều lần cho mỗi yêu cầu không?

  5. Sự khác biệt giữa ReplaceOne () và updateOne () trong MongoDB là gì?