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

Chèn một giá trị tại một vị trí cụ thể trong một mảng trong MongoDB

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ữa SL .

Đâ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ốn M đ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ữa MXL 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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sử dụng máy chủ MongoDB giả để kiểm tra đơn vị

  2. Kho lưu trữ phản ứng dữ liệu mùa xuân với MongoDB

  3. Làm cách nào để kích hoạt xác thực trên MongoDB thông qua Docker?

  4. Nhóm trình điều khiển MongoDB .NET theo phạm vi thời gian

  5. Lỗi PHP Mongo đọc từ ổ cắm