Làm cách nào để xóa một phần tử khỏi mảng trong mongodb?

(âm thanh trò chơi điện tử) - [Người kể chuyện] Do dữ liệu luôn thay đổi nên việc xóa các phần tử khỏi mảng được nhúng là một nhiệm vụ phổ biến đối với quản trị viên cơ sở dữ liệu Mongo. Để tạo điều kiện thuận lợi cho việc này, Mongo cung cấp toán tử truy vấn kéo để giúp chúng ta làm việc với mảng. Kéo có thể đơn giản như chỉ định một giá trị hoặc phức tạp như yêu cầu các chức năng tùy chỉnh hoặc sử dụng $elemmatch như chúng ta đã thấy trước đây, để tìm các giá trị cần xóa. Bạn cũng có thể sử dụng toán tử set như bình thường để cập nhật và thay thế mảng bằng một mảng hoàn toàn mới, có thể là một mảng trống nếu bạn muốn xóa các giá trị nhưng vẫn giữ nguyên thuộc tính mảng. Đối với thử thách này, hãy sử dụng phương thức updateOne() để thay đổi một mảng trong các tài liệu đã chọn trong bộ sưu tập của khách hàng như sau. Đầu tiên, hủy liên kết đơn đặt hàng với người dùng bằng cách sử dụng id hợp lệ được tìm thấy trong mảng đơn đặt hàng của người dùng. Sau đó, sử dụng phương thức set để làm trống mảng danh mục yêu thích của một người dùng bằng…

Tải xuống các khóa học và học mọi lúc, mọi nơi

Xem các khóa học trên thiết bị di động của bạn mà không cần kết nối internet. Tải xuống các khóa học bằng ứng dụng LinkedIn Learning trên iOS hoặc Android của bạn

Tuần trước tôi phải làm việc trên một dự án cũ với MongoDB. Một số tài liệu có mảng nhúng cần được cập nhật và tôi nhận ra rằng mỗi khi tôi phải thực hiện loại thao tác này, tôi sẽ phải tra cứu rất nhiều trên Google để học lại những thứ tôi đã quên

Vì vậy, lần này tôi quyết định ghi chép kỹ lưỡng mọi thứ tôi học được và viết một bài báo với các ví dụ để Paula trong tương lai có thể đi thẳng vào các ví dụ thay vì tìm kiếm lại mọi thứ trên Google. Và này. Có lẽ ai đó khác cũng thấy nó hữu ích

Tôi cũng bao gồm các hình ảnh động ngắn minh họa cho từng ví dụ 🤓

Giới thiệu

Trong bài viết này, tôi sẽ chỉ nói về việc thêm và xóa các phần tử khỏi tài liệu với mảng nhúng. Tuần sau tôi sẽ đăng một bài viết mới về cách cập nhật nội dung các phần tử trong mảng

DB ví dụ mà chúng ta sẽ sử dụng bao gồm một bộ sưu tập đơn giản các "combo bánh rán" từ một cửa hàng bánh rán. Mỗi combo đều có tên và các loại bánh sẽ được tặng kèm nếu khách chọn combo đó. Đây là lược đồ hoàn chỉnh

// donutCombo Schema
{
    name: { type: String, required: true },
    active: { type: Boolean, required: true },
    donuts: [{
        color: { type: String },
        glazing: { type: Boolean }
    }]
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Thêm phần tử mới vào mảng

Chúng ta có thể thêm một phần tử mới vào một mảng bằng cách sử dụng toán tử $push. Theo mặc định, phần tử mới sẽ được thêm vào cuối mảng

Thêm một phần tử vào cuối

Trong ví dụ sau, chúng tôi sẽ thêm một chiếc bánh donut màu hồng vào tài liệu đầu tiên được tìm thấy với

db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            color: "pink",
            glazing: true
        }
    }
});
0 "No Choco"

db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            color: "pink",
            glazing: true
        }
    }
});

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Làm cách nào để xóa một phần tử khỏi mảng trong mongodb?

Thêm một yếu tố vào một vị trí cụ thể

Sử dụng công cụ sửa đổi

db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            color: "pink",
            glazing: true
        }
    }
});
1, chúng tôi có thể chỉ định vị trí trong mảng mà chúng tôi muốn các phần tử mới của mình được định vị. Để sử dụng công cụ sửa đổi
db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            color: "pink",
            glazing: true
        }
    }
});
1, chúng tôi cũng cần sử dụng công cụ sửa đổi
db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            color: "pink",
            glazing: true
        }
    }
});
1, mặc dù chúng tôi chỉ thêm một phần tử

Trong ví dụ sau, chúng tôi sẽ thêm một chiếc bánh donut màu hồng vào tài liệu đầu tiên được tìm thấy với

db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            color: "pink",
            glazing: true
        }
    }
});
0 "No Choco", ở vị trí *thứ 2 *của mảng

db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            $position: 2,
            $each: [{
                color: "pink",
                glazing: true
            }]
        }
    }
});

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Làm cách nào để xóa một phần tử khỏi mảng trong mongodb?

Thêm nhiều phần tử

Sử dụng công cụ sửa đổi

db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            color: "pink",
            glazing: true
        }
    }
});
1, chúng ta có thể đẩy nhiều hơn một phần tử vào mảng của mình

Trong ví dụ sau, chúng tôi sẽ thêm hai chiếc bánh rán (màu trắng và sô cô la) vào cuối mảng trong tài liệu đầu tiên có tên "B&W"

db.donutCombos.updateOne({ name: "B&W" }, {
    $push: {
        donuts: {
            $each: [
                { color: "white", glazing: true },
                { color: "chocolate", glazing: true }
            ]
        }
    }
});

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Làm cách nào để xóa một phần tử khỏi mảng trong mongodb?

Xóa một phần tử khỏi mảng

Để xóa một phần tử khỏi mảng, chúng ta sử dụng toán tử

db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            color: "pink",
            glazing: true
        }
    }
});
4. Bên trong đối tượng $pull, chúng ta phải chỉ định một cặp khóa-giá trị. khóa là tên của thuộc tính mảng từ tài liệu của chúng tôi và giá trị là bộ lọc mà chúng tôi muốn áp dụng để xác định phần tử nào sẽ bị xóa

Trong ví dụ sau, chúng tôi sẽ xóa tất cả các bánh rán màu trắng khỏi các tài liệu đang hoạt động trong bộ sưu tập bánh ránCombos

db.donutCombos.updateMany({ active: true }, {
    $pull: {
        donuts: { color: "white" }
    }
});

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Làm cách nào để xóa một phần tử khỏi mảng trong mongodb?

Hãy tự mình thử

Tôi đã tạo một repo để thử các truy vấn MongoDB trong bộ nhớ bằng Node. js với trình điều khiển Jest và MongoDB Node. Tôi sử dụng các bài kiểm tra để thực hiện truy vấn và xác minh xem mọi thứ đã được cập nhật chính xác hay chưa. Tôi cũng bao gồm một trình ghi nhật ký in các tài liệu đã cập nhật trong bảng điều khiển hiển thị các thay đổi đã được áp dụng bằng cú pháp tô sáng khác

Làm cách nào để xóa một phần tử khỏi mảng trong mongodb?

Bạn có thể tìm thấy các ví dụ tôi đưa vào bài viết này trong thư mục

db.donutCombos.updateOne({ name: "No Choco" }, {
    $push: {
        donuts: {
            color: "pink",
            glazing: true
        }
    }
});
5

pawap90 / try-mongodb-query

Một dự án mẫu đơn giản để thử các truy vấn MongoDB trong bộ nhớ bằng cách sử dụng Jest

thử-mongodb-truy vấn

Một dự án đơn giản để thử các truy vấn MongoDB trong bộ nhớ bằng cách sử dụng Jest. Bao gồm một trình ghi nhật ký ghi lại sự khác biệt giữa dữ liệu thử nghiệm ban đầu và dữ liệu sau khi cập nhật bằng cách sử dụng tô sáng cú pháp khác

Làm cách nào để xóa một phần tử khỏi mảng trong MongoDB?

Để xóa phần tử, hãy cập nhật và sử dụng $pull trong MongoDB. Toán tử $pull loại bỏ khỏi một mảng hiện có tất cả các phiên bản của một giá trị hoặc các giá trị khớp với một điều kiện đã chỉ định.

Làm cách nào để xóa một trường trong MongoDB?

Toán tử $unset xóa một trường cụ thể. Hãy xem xét cú pháp sau. { $unset. {

Làm cách nào để xóa một giá trị khỏi mảng trong cầy mangut?

cập nhật( // chọn tài liệu của bạn trong moongo { }, // truy vấn của bạn, thường khớp với _id { $pull. { kết quả. { $elemMatch. { ghi bàn. 8, mặt hàng. "B" } } } }, // (các) mục để khớp từ mảng bạn muốn kéo/xóa { multi. true } // đặt giá trị này thành true nếu bạn muốn xóa nhiều phần tử. )