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

Làm cách nào để di chuyển một mục trong mảng MongoDB?

Đây là một cách khác để di chuyển một phần tử đến một vị trí mới sẽ hoán đổi vị trí của it2 và it3 ...

  1. Xóa phần tử khỏi mảng bằng cách sử dụng $ pull [Docs Here] .

    update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
    
  2. Chèn phần tử vào vị trí mới bằng cách sử dụng $ push. [Tài liệu tại đây] .

    update({"name": "myDoc"}, { 
        $push: { 
            "items" : { $each : [ "it3" ], $position : 1 }
        }
    });
    

Khi nào sử dụng

Câu trả lời của Pouzor để sử dụng $ set có thể đơn giản hơn và hoạt động tốt hơn cho nhiều trường hợp sử dụng.

Tuy nhiên, nếu nhiều người dùng đồng thời thêm, xóa và sắp xếp lại các mục mảng thì phương pháp này có nghĩa là bạn sẽ không ghi đè các thay đổi của nhau.

Nó cũng có thể hiệu quả hơn trong một số trường hợp (ví dụ:phần tử mảng lớn) vì ít dữ liệu được ghi hơn.

GOTCHA:Danh sách các danh sách

Nếu danh sách bạn đang sắp xếp lại là một mảng các mảng, bạn cần sử dụng toán tử $ all với $ pull [Tài liệu tại đây]

Lấy ví dụ sau:

{
    name: "myDoc",
    items: [  
        [ "User", "dofij20r91dj93" ],   
        [ "User", "239vjvidjfsldf" ], 
        [ "User", "2309jvdsjdkk23" ]
    ]
}

Đây là mã để xóa danh sách đầu tiên khỏi danh sách danh sách:

update({"name": "myDoc"}, {
    $pull: {
        "items" : {
            $all : [ "User", "dofij20r91dj93" ]  // the sub-list to $pull
        }
    }
});

Danh sách đối tượng

Điều này thật dễ dàng. Giả sử bạn có danh sách các đối tượng sau:

{
    name: "myDoc",
    items: [  
        { type: "User",  id: "dofij20r91dj93", name: "Dave" },   
        { type: "Group", id: "239vjvidjfsldf", name: "Accountants" }, 
        { type: "User",  id: "2309jvdsjdkk23", name: "Toni" }
    ]
}

Bạn có thể $ pull như thế này:

update({"name": "myDoc"}, {
    $pull: { 
        "items" : { type: "User", id: "dofij20r91dj93" } 
    }
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tải các phần tử không thành công trên máy chủ JS

  2. Sự khác biệt chính xác giữa mongod và mongos là gì

  3. MongoDB + Azure + Android:com.mongodb.WriteConcernException lỗi:không phải mã chính:10058

  4. Lập chỉ mục khi nào, lập chỉ mục gì trong Mongoid?

  5. Các phương pháp hay nhất để bảo mật MongoDB