আপনি মঙ্গুসের সাথে সংগ্রহ থেকে সমস্ত দস্তাবেজ কীভাবে সরাতে পারেন?


91

আমি জানি কিভাবে...

  • একটি একক দস্তাবেজ সরান।
  • সংগ্রহ নিজেই সরান।
  • মঙ্গোর সাথে সংগ্রহ থেকে সমস্ত নথি সরান।

তবে আমি জানি না যে মঙ্গুসের সাথে সংগ্রহ থেকে সমস্ত নথি কীভাবে সরিয়ে ফেলা যায়। ব্যবহারকারী যখন একটি বোতাম ক্লিক করেন তখন আমি এটি করতে চাই। আমি ধরে নিলাম যে আমাকে কিছু শেষ পয়েন্টে একটি এজেএক্স অনুরোধ প্রেরণ করতে হবে এবং সমাপ্তিটি অপসারণটি করতে হবে, তবে শেষ পয়েন্টে অপসারণটি কীভাবে পরিচালনা করতে হয় তা আমি জানি না।

আমার উদাহরণে, আমার কাছে একটি Datetimeসংগ্রহ রয়েছে এবং যখন ব্যবহারকারী কোনও বোতাম ক্লিক করেন তখন আমি সমস্ত নথী সরিয়ে ফেলতে চাই।

এপিআই / ডেটটাইম / সূচক.জেএস

'use strict';

var express = require('express');
var controller = require('./datetime.controller');

var router = express.Router();

router.get('/', controller.index);
router.get('/:id', controller.show);
router.post('/', controller.create);
router.put('/:id', controller.update);
router.patch('/:id', controller.update);
router.delete('/:id', controller.destroy);

module.exports = router;

এপিআই / ডেটটাইম / ডেটটাইমকন্ট্রোলআরজেএস

'use strict';

var _ = require('lodash');
var Datetime = require('./datetime.model');

// Get list of datetimes
exports.index = function(req, res) {
  Datetime.find(function (err, datetimes) {
    if(err) { return handleError(res, err); }
    return res.json(200, datetimes);
  });
};

// Get a single datetime
exports.show = function(req, res) {
  Datetime.findById(req.params.id, function (err, datetime) {
    if(err) { return handleError(res, err); }
    if(!datetime) { return res.send(404); }
    return res.json(datetime);
  });
};

// Creates a new datetime in the DB.
exports.create = function(req, res) {
  Datetime.create(req.body, function(err, datetime) {
    if(err) { return handleError(res, err); }
    return res.json(201, datetime);
  });
};

// Updates an existing datetime in the DB.
exports.update = function(req, res) {
  if(req.body._id) { delete req.body._id; }
  Datetime.findById(req.params.id, function (err, datetime) {
    if (err) { return handleError(res, err); }
    if(!datetime) { return res.send(404); }
    var updated = _.merge(datetime, req.body);
    updated.save(function (err) {
      if (err) { return handleError(res, err); }
      return res.json(200, datetime);
    });
  });
};

// Deletes a datetime from the DB.
exports.destroy = function(req, res) {
  Datetime.findById(req.params.id, function (err, datetime) {
    if(err) { return handleError(res, err); }
    if(!datetime) { return res.send(404); }
    datetime.remove(function(err) {
      if(err) { return handleError(res, err); }
      return res.send(204);
    });
  });
};

function handleError(res, err) {
  return res.send(500, err);
}

আপনার একটি এজ্যাক্স মুছা সহ একটি মোছার রুট তৈরি করতে হবে। আমাকে এইচটিএমএল কোড বোতামটি দেখান।

এখন আমি আপনাকে সাহায্য করতে পারি .. মাত্র এক সেকেন্ড পরে, আমি কোডটি তৈরি করব।

দয়া করে আমাকে এইচটিএমএল বোতামটি দেখান।

@ মিয়ারবিয়ারএন্ডবার - আমি বোতামটির জন্য কোডটি এখনও লিখিনি। বোতামটি কেবলমাত্র এজেএক্স অনুরোধটি শেষ পয়েন্টে জমা দেয় - শেষ পয়েন্টটি কীভাবে গঠন করা যায় তা সম্পর্কে আমার কেবল জানতে হবে।
অ্যাডাম জারনার

আমার উত্তর @ অ্যাডামজারনার

উত্তর:


146

DateTime.remove({}, callback) খালি বস্তুটি তাদের সকলের সাথে মিলবে।


16
দয়া করে সচেতন হন।। সরানো () অবমূল্যায়ন করা হচ্ছে। Use deleteOne, deleteMany or bulkWrite instead.নকুল মধ্যে github.com/Automattic/mongoose/issues/6880
পেড্রো লূস

@ পেদ্রোলুজ আমি এক বছরে মঙ্গুজ ব্যবহার করি নি। আমি আমার উত্তর আপডেট করে খুশি, কিন্তু আমি এখনও মডেল # সর্বাধিক সাম্প্রতিক সংস্করণের ডক্সে অপসারণ দেখতে পাচ্ছি। আপনি যে আলোচনাটি সংযুক্ত করেছেন সেটি বলছে যে মঙ্গো সেগুলি হ'ল, তবে মঙ্গুজ তা করেনি। সেখানে কি একটি নির্দিষ্ট প্রকাশ আছে যেখানে এটি অবচয় তালিকাতে যুক্ত করা হয়েছে (বা এমন সংস্করণ যা এটি অপসারণের প্রত্যাশা করেছে) যাতে আমার "সংস্করণ xyz এর পূর্বে .." স্পষ্ট হয়ে উঠতে পারি?
ক্রিসবাজোরিন

4
অপসারণ
হ্রাস করা

অবমানন সতর্কতা: সংগ্রহ.আরমোভ অবচিত করা হয়েছে। পরিবর্তে মুছে ফেলা ওজন, মুছুনমণি বা বাল্ক রাইট ব্যবহার করুন। @ ক্রিসবাজোরিন
অ্যান্টনি


15

মঙ্গোডিবিতে, db.collection.remove () পদ্ধতিটি সংগ্রহ থেকে দস্তাবেজগুলি সরিয়ে দেয়। আপনি সংগ্রহ থেকে সমস্ত দস্তাবেজ সরিয়ে ফেলতে পারেন, শর্তের সাথে মেলে এমন সমস্ত দস্তাবেজ মুছে ফেলতে পারেন, বা কেবলমাত্র একটি ডকুমেন্ট অপসারণ করতে অপারেশন সীমাবদ্ধ করতে পারেন।

সূত্র: মংডব

আপনি যদি মঙ্গো শিল ব্যবহার করছেন তবে কেবল এটি করুন:

db.Datetime.remove({})

আপনার ক্ষেত্রে, আপনার প্রয়োজন:

আপনি আমাকে মুছুন বোতামটি দেখান নি, তাই এই বোতামটি কেবল একটি উদাহরণ:

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

নিয়ামকটি এতে পরিবর্তন করুন:

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

আপনার ক্লায়েন্টের জেএস ফাইলে এই এজাক্স মুছার পদ্ধতিটি সন্নিবেশ করুন:

        $(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!');
                }
            });
        });

মঙ্গুসের সাথে এটি করার কোনও উপায় আছে কি? আমার স্ট্যাকটি কৌনিক / এক্সপ্রেস / নোড / মঙ্গো। আমি কৌণিক-ফুলস্ট্যাক জেনারেটর ব্যবহার করছি । আমি নিশ্চিত না কীভাবে সরাসরি মঙ্গো কমান্ডগুলি চালাতে পারি, আমি সবসময় মঙ্গুজ ব্যবহার করেছি।
অ্যাডাম জারনার

আপনি কি আপনার রুটগুলি সংজ্ঞায়িত করতে এক্সপ্রেস ব্যবহার করছেন?

আমি কৌণিক ব্যবহার করছি, তাই বোতামটি ঠিক আছে <button ng-click="clear()">Clear</button>
অ্যাডাম জারনার

আমি দুঃখিত, আমি আমার উত্তর আপডেট করেছি .. আমি বুঝতে পারি নি যে আপনি সমস্ত সংগ্রহগুলি মুছতে চান - '। আপনি যদি আমার সাথে আপনার কোডটি আপডেট করেন, মুছা প্রক্রিয়া শেষে, পৃষ্ঠাটি পুনরায় লোড হবে।

0

মঙ্গোডিবি শেল সংস্করণ v4.2.6
নোড ভি 14.2.0

ধরে নিচ্ছি আপনার কাছে একটি ট্যুর মডেল রয়েছে: ট্যুরমোডেল.জেএস

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;

এখন আপনি আপনার মঙ্গোডিবি থেকে একবারে সমস্ত ট্যুর মুছতে চান, আমি দূরবর্তী ক্লাস্টারের সাথে সংযোগের জন্য সংযোগ কোডও সরবরাহ করছি। আমি মুছে ফেলুনি () ব্যবহার করেছিলাম, আপনি যদি ম্যানিটি () মুছতে কোনও আর্গ পাস না করেন তবে এটি ট্যুর সংগ্রহের সমস্ত নথি মুছে ফেলবে।

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);
  }
};
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.