Trong MongoDB, bạn có thể sử dụng $push
toán tử để nối một giá trị vào một mảng.
Toán tử này có thể được sử dụng với các công cụ sửa đổi khác nhau, một trong số đó là $position
bổ nghĩa. $position
công cụ sửa đổi cho phép bạn chỉ định vị trí trong mảng mà bạn muốn chèn giá trị mới.
Thêm giá trị vào đầu mảng
Giả sử chúng ta có bộ sưu tập sau:
{"_id":1, "prod":"Bat", "size":["S", "M", "XL"]} {"_id":2, "prod":"Mũ" , "cỡ":["S", "L", "XL"]} {"_id":3, "prod":"Cap", "cỡ":["M", "L"]}Và giả sử chúng ta muốn thêm một giá trị vào đầu mảng trong tài liệu 3.
Chúng tôi có thể làm điều này:
db.products.update( { _id: 3 }, { $push: { sizes: { $each: [ "S" ], $position: 0 } } } )
Bây giờ chúng ta hãy kiểm tra lại bộ sưu tập:
db.products.find()
Kết quả:
{"_id":1, "prod":"Bat", "size":["S", "M", "XL"]} {"_id":2, "prod":"Mũ" , "cỡ":["S", "L", "XL"]} {"_id":3, "prod":"Cap", "cỡ":["S", "M", "L" ]}Mảng dựa trên 0, vì vậy
position: 0
thêm giá trị dưới dạng phần tử đầu tiên trong mảng.Thêm giá trị vào giữa mảng
Giả sử chúng ta muốn thêm giá trị
M
sang tài liệu 2 và chúng tôi muốn nó nằm giữaS
vàL
.Đây là cách chúng tôi có thể làm điều đó:
db.products.update( { _id: 2 }, { $push: { sizes: { $each: [ "M" ], $position: 1 } } } )
Bây giờ chúng ta hãy kiểm tra lại bộ sưu tập:
db.products.find()
Kết quả:
{"_id":1, "prod":"Bat", "size":["S", "M", "XL"]} {"_id":2, "prod":"Mũ" , "kích thước":["S", "M", "L", "XL"]} {"_id":3, "prod":"Cap", "size":["S", "M" , "L"]}Chúng tôi đã sử dụng
$position: 1
, bởi vì đó là vị trí mà chúng tôi muốnM
đi (tức là vị trí thứ hai).Giá trị phủ định
Bạn cũng có thể cung cấp một giá trị âm làm vị trí. Khi bạn làm điều này, giá trị được chèn vào vị trí phủ định được chỉ định đếm ngược từ cuối.
Giả sử chúng ta muốn chèn
L
ở giữaM
vàXL
trong tài liệu 1.Dưới đây là cách chúng tôi giải quyết vấn đề đó bằng cách sử dụng vị trí phủ định:
db.products.update( { _id: 1 }, { $push: { sizes: { $each: [ "L" ], $position: -1 } } } )
Kiểm tra kết quả:
db.products.find()
Kết quả:
{"_id":1, "prod":"Bat", "size":["S", "M", "L", "XL"]} {"_id":2, "prod" :"Mũ", "kích cỡ":["S", "M", "L", "XL"]} {"_id":3, "prod":"Mũ", "kích cỡ":["S" , "M", "L"]}Với vị trí chỉ mục âm, nếu bạn chỉ định nhiều phần tử trong
$each
mảng, phần tử được thêm cuối cùng ở vị trí được chỉ định từ cuối.