Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cách lấy các số chẵn từ mảng trong MongoDB

MongoDB cung cấp toán tử $mod trong truy vấn để lọc các số theo modulo. Kết hợp với $pull, có thể xóa tất cả các số chẵn khỏi mảng trong một thao tác duy nhất.

Tạo dữ liệu mẫu

> db.pullEvenNumbersDemo.insertOne({"AllNumbers":[101,102,104,106,108,109,110,112,14,17,18,21]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd45b072cba06f46efe9eea") }

Xem dữ liệu ban đầu

> db.pullEvenNumbersDemo.find().pretty();

Xóa số chẵn khỏi mảng

Sử dụng $pull với $mod: [2, 0] (số chia 2 dư 0 = số chẵn):

> db.pullEvenNumbersDemo.updateMany(
  {}, 
  { "$pull": { "AllNumbers": { "$mod": [ 2, 0 ] } } }
);
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Kết quả sau khi xóa

> db.pullEvenNumbersDemo.find().pretty();

Giải thích kỹ thuật

  • $mod: [divisor, remainder]: Trả về tài liệu nếu giá trị trường chia cho divisor dư remainder
  • [2, 0]: Chia cho 2 dư 0 → số chẵn
  • $pull: Xóa tất cả phần tử khớp điều kiện khỏi mảng
  • updateMany({}, ...): Áp dụng cho tất cả tài liệu trong collection

Các biến thể hữu ích

  • Lấy số lẻ: {$mod: [2, 1]}
  • Số chia hết cho 3: {$mod: [3, 0]}
  • Chỉ xóa 1 phần tử đầu tiên khớp: Sử dụng updateOne() thay vì updateMany()

Lưu ý hiệu năng

Với mảng lớn, cân nhắc tạo index trên trường mảng hoặc sử dụng Aggregation Pipeline để xử lý phức tạp hơn.