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