How can you remove all documents from a collection with Mongoose?

后端 未结 4 571
日久生厌
日久生厌 2020-12-14 05:04

I know how to...

  • Remove a single document.
  • Remove the collection itself.
  • Remove all documents from the collection with Mongo.

相关标签:
4条回答
  • 2020-12-14 05:46

    .remove() is deprecated. instead we can use deleteMany

    DateTime.deleteMany({}, callback).

    0 讨论(0)
  • 2020-12-14 05:48

    MongoDB shell version v4.2.6
    Node v14.2.0

    Assuming you have a Tour Model: tourModel.js

    const mongoose = require('mongoose');
    
    const tourSchema = new mongoose.Schema({
      name: {
        type: String,
        required: [true, 'A tour must have a name'],
        unique: true,
        trim: true,
      },
      createdAt: {
        type: Date,
        default: Date.now(),
      },
    });
    const Tour = mongoose.model('Tour', tourSchema);
    
    module.exports = Tour;
    

    Now you want to delete all tours at once from your MongoDB, I also providing connection code to connect with the remote cluster. I used deleteMany(), if you do not pass any args to deleteMany(), then it will delete all the documents in Tour collection.

    const mongoose = require('mongoose');
    const Tour = require('./../../models/tourModel');
    const conStr = 'mongodb+srv://lord:<PASSWORD>@cluster0-eeev8.mongodb.net/tour-guide?retryWrites=true&w=majority';
    const DB = conStr.replace('<PASSWORD>','ADUSsaZEKESKZX');
    mongoose.connect(DB, {
        useNewUrlParser: true,
        useCreateIndex: true,
        useFindAndModify: false,
        useUnifiedTopology: true,
      })
      .then((con) => {
        console.log(`DB connection successful ${con.path}`);
      });
    
    const deleteAllData = async () => {
      try {
        await Tour.deleteMany();
        console.log('All Data successfully deleted');
      } catch (err) {
        console.log(err);
      }
    };
    
    0 讨论(0)
  • 2020-12-14 05:50

    DateTime.remove({}, callback) The empty object will match all of them.

    0 讨论(0)
  • 2020-12-14 06:04

    In MongoDB, the db.collection.remove() method removes documents from a collection. You can remove all documents from a collection, remove all documents that match a condition, or limit the operation to remove just a single document.

    Source: Mongodb.

    If you are using mongo sheel, just do:

    db.Datetime.remove({})
    

    In your case, you need:

    You didn't show me the delete button, so this button is just an example:

    <a class="button__delete"></a>
    

    Change the controller to:

    exports.destroy = function(req, res, next) {
        Datetime.remove({}, function(err) {
                if (err) {
                    console.log(err)
                } else {
                    res.end('success');
                }
            }
        );
    };
    

    Insert this ajax delete method in your client js file:

            $(document).ready(function(){
                $('.button__delete').click(function() {
                    var dataId = $(this).attr('data-id');
    
                    if (confirm("are u sure?")) {
                        $.ajax({
                            type: 'DELETE',
                            url: '/',
                            success: function(response) {
                                if (response == 'error') {
                                    console.log('Err!');
                                }
                                else {
                                    alert('Success');
                                    location.reload();
                                }
                            }
                        });
                    } else {
                        alert('Canceled!');
                    }
                });
            });
    
    0 讨论(0)
提交回复
热议问题