MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara menghapus dokumen yang dikembalikan oleh kueri agregasi di mongodb

Sejak menghapus tidak memiliki kondisi kueri yang akan cocok dengan semua dokumen dan menghapus terlepas dari hasil agregasi.

Solusi (cocok dengan id dari dokumen kursor saat ini):

db.getCollection("Collection")
  .aggregate([
    {
      $match: { status: { $in: ["inserted", "done", "duplicated", "error"] } }
    },
    {
      $project: {
        yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$date" } }
      }
    },
    { $match: { yearMonthDay: { $eq: "2019-08-06" } } }
  ])
  .forEach(function(doc) {
    db.getCollection("Collection").remove({ "_id": doc._id });
  });

solusi lain yang lebih baik akan memiliki satu perjalanan pulang pergi ke db sementara penghapusan mendapatkan daftar id dari agregasi cursor() melalui cursor.map()

var idsList = db
  .getCollection("Collection")
  .aggregate([
    {
      $match: { status: { $in: ["inserted", "done", "duplicated", "error"] } }
    },
    {
      $project: {
        yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$date" } }
      }
    },
    { $match: { yearMonthDay: { $eq: "2019-08-06" } } }
  ])
  .map(function(d) {
    return d._id;
  });

//now delete those documents via $in operator
db.getCollection("Collection").remove({ _id: { $in: idsList } });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Memeriksa Koneksi ke MongoDB

  2. Bagaimana memulihkan database MongoDB yang jatuh?

  3. Pencocokan data musim semi dan Filter Array Bersarang

  4. Tidak dapat terhubung ke MongoDB errno:61

  5. Python dan MongoDB:Menghubungkan ke Database NoSQL