Tập hợp mongodb xóa đối tượng khỏi mảng
Vì vậy, tôi đang sử dụng khung tổng hợp để tổng hợp một số kết quả. Câu hỏi của tôi là làm cách nào để tránh trả lại 3 mỗi lần nếu có kết quả tổng bằng 0 Show
Tôi chỉ muốn hiển thị 4 và loại bỏ 3 khácliên kết - stackoverflow. comghi bàn. 1 câu trả lời được chấp nhận Những gì bạn đang cố gắng làm là xóa một trường khỏi tài liệu trong đường dẫn dựa trên giá trị của trường. Tôi không tin rằng điều này có thể thực hiện được với khung tổng hợp (kể từ 2. 6). Tuy nhiên, có vẻ như đó không phải là vấn đề, vì việc bỏ qua kết quả 6 ở bất cứ nơi nào bạn đang sử dụng chúng là chuyện nhỏ. Sẽ rất hữu ích khi xem một quy trình tổng hợp đầy đủ, bởi vì có thể có những sửa đổi trước đó trong quy trình sẽ ngăn chặn bất kỳ trường 7 nào được tạo với giá trị 0, có thể nói là giải quyết vấn đề theo hướng khác Với 8, tôi nhận được chỉ mục là "johndoe". Vấn đề là. Tôi không thể sử dụng 9 vì điều này cần 2 hoặc ba đối số làm điểm bắt đầu hoặc làm điểm bắt đầu + số để giữ. Nhưng lấy mảng này
Bằng cách nào, với một đường dẫn tổng hợp, tôi có thể chuyển đổi mảng này thành **remove "janedoe" (chỉ mục. 1)`` từ mảng, vì vậy sau đường dẫn tổng hợp, tôi muốn cái này Chúng tôi có thể áp dụng các cách tiếp cận khác nhau tùy thuộc vào yêu cầu của dự án. Hôm nay, chúng ta sẽ học cách sử dụng 7, 8, 9, 0 và toán tử vị trí ( 1) để xóa phần tử khỏi mảng hoặc mảng tài liệu khi làm việc trong MongoDBChúng ta phải có một bộ sưu tập (các) tài liệu mẫu để thực hành tất cả các cách đã đề cập. Chúng tôi sẽ tạo một bộ sưu tập có tên là 2 và chỉ chèn một tài liệuBạn cũng có thể sử dụng 2 sau có chứa một tài liệuMã ví dụ ________số 8Nếu bạn không có bộ sưu tập có tên 2, đừng lo lắng; . Tiếp theo, bạn có thể chạy 5 để xem tài liệu đã chènHãy nhớ rằng, bạn sẽ không thấy các tài liệu được cập nhật sau khi thực hiện các ví dụ mã sắp tới. Để làm được điều đó, bạn phải thực hiện lệnh 5Sử dụng MongoDB // MongoDB version 5.0.8 > db.collection.update( { _id : ObjectId("62aae796f27219958a489b89") }, { $pull : { "contact.phone": { "number": "987546321" } } } ); 7 để xóa phần tử khỏi một mảng tài liệuMã ví dụ
ĐẦU RA
Ở đây, chúng tôi đang sử dụng toán tử 7 để xóa tất cả các phiên bản của một giá trị/giá trị khỏi một mảng hiện có khớp với truy vấn bộ lọc hoặc điều kiện đã chỉ địnhTrong ví dụ mã trên, chúng tôi đang tìm kiếm một tài liệu trong đó 9 bằng với 70. Sau khi tài liệu khớp với điều kiện đã chỉ định, chúng tôi xóa đối tượng khỏi một mảng hiện có trong đó 71 bằng với 72Hãy nhớ những điểm sau khi sử dụng toán tử 7
Bây giờ, chúng tôi có một tình huống khác mà chúng tôi muốn thực hiện thao tác 92 trên tất cả các tài liệu trong bộ sưu tập. Để làm điều đó, chúng tôi sử dụng cú pháp sau sử dụng 7 trong khi 94 hoạt động trên tất cả các tài liệu của điều kiện đã chỉ địnhMã ví dụ 7ĐẦU RA 9Để có được đầu ra ở trên, chúng tôi xóa phần tử mảng khỏi tất cả các tài liệu trong bộ sưu tập trong đó 95 bằng với 96Nhiệm vụ tiếp theo của chúng ta là xóa các phần tử khỏi mảng 97 có giá trị lớn hơn hoặc bằng 98 và nhỏ hơn hoặc bằng 99 ( 90 ). Thực hiện truy vấn sau để thực hiện điều đó cho tất cả các tài liệu của bộ sưu tập đã chọnMã ví dụ 9ĐẦU RA 1Để thực hành với các giá trị kiểu chuỗi, chúng ta có thể làm theo cách sau Mã ví dụ 2ĐẦU RA 3Đối với ví dụ mã này, chúng tôi sử dụng toán tử so sánh 91 để có một mảng các giá trị và loại bỏ chúng khỏi mảng 92 nếu có bất kỳ giá trị nàoHơn nữa, chúng tôi xóa 93 khỏi mảng 97 nếu nó ở đó trong khi chúng tôi đang sử dụng toán tử 7 để thực hiện tất cả thao tác xóa nàySử dụng MongoDB // MongoDB version 5.0.8 > db.collection.update( { _id : ObjectId("62aae796f27219958a489b89") }, { $pull : { "contact.phone": { "number": "987546321" } } } ); 8 để xóa phần tử khỏi một mảngMã ví dụ 0ĐẦU RA 0Đối với mã này, chúng tôi đang sử dụng toán tử 8 để xóa tất cả các lần xuất hiện (trường hợp) của giá trị đã cho khỏi một mảng đã tồn tại. Chẳng hạn, nếu số 98 xuất hiện hai lần trong mảng 97, thì cả hai giá trị 98 sẽ bị xóaGiống như toán tử 7 loại bỏ các phần tử mảng bằng cách chỉ định truy vấn bộ lọc, 8 xóa/loại bỏ các phần tử mảng khớp với các giá trị được liệt kêChúng tôi sử dụng ký hiệu dấu chấm để xử lý các tài liệu nhúng của mảng Sử dụng MongoDB // MongoDB version 5.0.8 > db.collection.update( { _id : ObjectId("62aae796f27219958a489b89") }, { $pull : { "contact.phone": { "number": "987546321" } } } ); 9 để xóa phần tử khỏi một mảngChúng ta có thể sử dụng toán tử 9 nếu muốn loại bỏ phần tử đầu tiên hoặc cuối cùng khỏi một mảng. Đối với điều này, chúng tôi chuyển 15 hoặc 93 cho toán tử 9 để xóa một phần tử mảng khỏi đầu tiên hoặc cuối cùngMã ví dụ 1ĐẦU RA 2Sử dụng MongoDB { "_id" : ObjectId("62aae796f27219958a489b89"), "contact" : { "phone" : [ { "type" : "UAN", "number" : "123456789" }, { "type" : "personal", "number" : "852147963" } ] }, "services" : [ "Google", "Instagram", "Twitter", "Facebook" ], "scores" : [ 0, 1, 8, 17, 18, 8, 20, 10 ] } { "_id" : ObjectId("62aae796f27219958a489b8a"), "contact" : { "phone" : [ { "type" : "UAN", "number" : "456321879" }, { "type" : "office", "number" : "874596321" }, { "type" : "personal", "number" : "964785123" } ] }, "services" : [ "Google", "Instagram", "Twitter" ], "scores" : [ 1, 8, 2, 3, 8, 7, 1 ] } 0 để xóa trường chứa phần tử đã choMã ví dụ 3ĐẦU RA 4Ở đây, chúng tôi sử dụng toán tử 0 để xóa một trường cụ thể chứa giá trị đã cho. Chẳng hạn, chúng tôi đang xóa trường 97 khớp với truy vấn bộ lọc và chứa 98 dưới dạng phần tử mảngHãy nhớ rằng khi chúng ta sử dụng toán tử 0 với toán tử vị trí ( 1), nó không loại bỏ phần tử phù hợp mà đặt nó thành 24. Xem phần sau để thực hành điều đóSử dụng Toán tử vị trí MongoDB để đặt phần tử thành { "_id" : ObjectId("62aae796f27219958a489b89"), "contact" : { "phone" : [ { "type" : "UAN", "number" : "123456789" }, { "type" : "personal", "number" : "852147963" } ] }, "services" : [ "Google", "Instagram", "Twitter", "Facebook" ], "scores" : [ 0, 1, 8, 17, 18, 8, 20, 10 ] } { "_id" : ObjectId("62aae796f27219958a489b8a"), "contact" : { "phone" : [ { "type" : "UAN", "number" : "456321879" }, { "type" : "office", "number" : "874596321" }, { "type" : "personal", "number" : "964785123" } ] }, "services" : [ "Google", "Instagram", "Twitter" ], "scores" : [ 1, 8, 2, 3, 8, 7, 1 ] } 24 thay vì xóaMã ví dụ 5ĐẦU RA 6Đoạn mã này sử dụng 0 với toán tử vị trí để đặt phần tử của mảng thành 24 thay vì loại bỏ nó. Chúng tôi sử dụng 1 để cập nhật phần tử đầu tiên của mảng có giá trị là 29 trong mảng 92Cách làm này có thể sử dụng khi chúng ta không biết vị trí của một phần tử trong mảng. Mặt khác, chúng ta cũng có thể sử dụng 31 (tất cả các toán tử vị trí) nếu chúng ta muốn cập nhật tất cả các phần tử trong trường mảng đã cho
Làm cách nào để xóa một đối tượng khỏi một mảng trong MongoDB?Nếu $pull chỉ xóa các phần tử trong mảng khớp với
Làm cách nào để xóa một đối tượng trong MongoDB?Trình vỏ MongoDB cung cấp các phương thức sau để xóa tài liệu khỏi bộ sưu tập. . Để xóa nhiều tài liệu, hãy sử dụng db. thu thập. xóaMany() Để xóa một tài liệu, hãy sử dụng db. thu thập. xóaOne() Làm cách nào để xóa mảng lồng nhau trong MongoDB?MongoDB xóa một phần tử khỏi chỉ mục mảng . Đọc tài liệu từ cơ sở dữ liệu Cập nhật tài liệu và xóa mục trong mảng Thay thế tài liệu trong cơ sở dữ liệu $$ có nghĩa là gì trong MongoDB?Trong biểu thức, ký hiệu đô la $ đánh giá thành đường dẫn trường; . e. cung cấp quyền truy cập vào trường . Ví dụ, biểu thức $eq $eq. [ "$price", "$1" ] thực hiện kiểm tra sự bằng nhau giữa giá trị trong trường có tên price và giá trị trong trường có tên 1 trong tài liệu. |