जवाबों:
यदि आपको ऐसा महसूस नहीं हो रहा है, तो प्रयास करें FBFriendModel.find({ id:333 }).remove( callback );याFBFriendModel.find({ id:333 }).remove().exec();
mongoose.model.findएक क्वेरी देता है , जिसमें एक removeफ़ंक्शन होता है ।
Mongoose v5.5.3 के लिए अद्यतन - remove()अब पदावनत कर दिया गया है। का उपयोग करें deleteOne(), deleteMany()याfindOneAndDelete() instead.
.exec()लेकिन यह बिल्कुल नहीं है। है .exec()की जरूरत है, इसे का उपयोग करने या नहीं करने वहाँ दुष्प्रभाव होते हैं?
अद्यतन: Mongoose संस्करण (5.5.3)
हटाने () को हटा दिया गया है और आप इसके बजाय deleteOne (), deleteMany (), या बल्कव्रीट () का उपयोग कर सकते हैं।
जैसा कि "mongoose": ">=2.7.1"आप दस्तावेज़ को .remove()खोजने के बजाय दस्तावेज़ को सीधे विधि से हटा सकते हैं और फिर इसे हटा सकते हैं जो मुझे अधिक कुशल और बनाए रखने में आसान लगता है।
उदाहरण देखें:
Model.remove({ _id: req.body.id }, function(err) {
if (!err) {
message.type = 'notification!';
}
else {
message.type = 'error';
}
});
अपडेट करें:
मानगो के अनुसार 3.8.1, कई तरीके हैं जो आपको सीधे एक दस्तावेज़ को हटाने की अनुमति देते हैं, कहते हैं:
removefindByIdAndRemovefindOneAndRemoveअधिक जानकारी के लिए एपीआई डॉक्स का संदर्भ लें ।
remove(query)यदि आप गलती से पास हो जाते हैं तो संभवतः अपना पूरा संग्रह खाली कर सकते हैं query = {}। findOneAndRemove(query)यदि मैं केवल एक दस्तावेज़ निकाल रहा हूँ तो उस कारण से मुझे पसंद है ।
Model.remove({ _id: 'whatever' }).exec().then(...)
docsदस्तावेजों की एक सरणी है। तो यह एक mongooseModel.remove()विधि नहीं है ।
आप सरणी में प्रत्येक दस्तावेज़ को अलग से पुनरावृत्त और निकाल सकते हैं।
या - चूंकि ऐसा लगता है कि आप एक (शायद) अद्वितीय आईडी द्वारा दस्तावेजों को ढूंढ रहे हैं - findOneइसके बजाय उपयोग करें find।
मेरे लिए यह संस्करण 3.8.1 के रूप में सबसे अच्छा है:
MyModel.findOneAndRemove({field: 'newValue'}, function(err){...});
और इसके लिए केवल एक डीबी कॉल की आवश्यकता होती है। इस दिए का उपयोग करें कि आप removeखोज और निष्कासन के लिए कोई क्रिया नहीं करते हैं ।
pre 'remove'यह ठीक काम करता है।
बस करो
FBFriendModel.remove().exec();
mongoose.model.find()एक क्वेरी ऑब्जेक्ट देता है जिसमें एक remove()फ़ंक्शन भी होता है ।
आप भी उपयोग कर सकते हैं mongoose.model.findOne(), यदि आप केवल एक अद्वितीय दस्तावेज़ निकालना चाहते हैं।
इसके अलावा आप पारंपरिक दृष्टिकोण का पालन कर सकते हैं और जहां आप पहले दस्तावेज़ को पुनः प्राप्त करते हैं और फिर हटाते हैं।
yourModelObj.findById(id, function (err, doc) {
if (err) {
// handle error
}
doc.remove(callback); //Removes the document
})
modelदस्तावेज़ को हटाने के लिए आप निम्नलिखित में से कोई भी तरीका अपना सकते हैं:
yourModelObj.findOneAndRemove(conditions, options, callback)
yourModelObj.findByIdAndRemove(id, options, callback)
yourModelObj.remove(conditions, callback);
var query = Comment.remove({ _id: id });
query.exec();
remove()पदावनत कर दिया गया है। का उपयोग करें deleteOne(), deleteMany()या bulkWrite()।
मैं जिस कोड का उपयोग करता हूं
TeleBot.deleteMany({chatID: chatID}, function (err, _) {
if (err) {
return console.log(err);
}
});
(node:9132) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
सामान्यीकृत करने के लिए आप इसका उपयोग कर सकते हैं:
SomeModel.find( $where, function(err,docs){
if (err) return console.log(err);
if (!docs || !Array.isArray(docs) || docs.length === 0)
return console.log('no docs found');
docs.forEach( function (doc) {
doc.remove();
});
});
इसे प्राप्त करने का दूसरा तरीका है:
SomeModel.collection.remove( function (err) {
if (err) throw err;
// collection is now empty but not deleted
});
FindOne के साथ सावधान रहें और निकालें!
User.findOne({name: 'Alice'}).remove().exec();
उपरोक्त कोड केवल पहले वाले के बजाय 'ऐलिस' नाम के सभी उपयोगकर्ताओं को हटा देता है ।
वैसे, मैं इस तरह से दस्तावेजों को निकालना पसंद करता हूं:
User.remove({...}).exec();
या कॉलबैक प्रदान करें और निष्पादन को छोड़ें ()
User.remove({...}, callback);
model.remove({title:'danish'}, function(err){
if(err) throw err;
});
यदि आप केवल एक ऑब्जेक्ट को निकालने के लिए देख रहे हैं, तो आप उपयोग कर सकते हैं
Person.findOne({_id: req.params.id}, function (error, person){
console.log("This object will get deleted " + person);
person.remove();
});
इस उदाहरण में, Mongoose मिलान req.params.id के आधार पर हटा देगा।
दस्तावेज़ को हटाने के लिए, मैं उपयोग करना पसंद करता हूं Model.remove(conditions, [callback])
कृपया निकालें के लिए एपीआई प्रलेखन देखें: -
http://mongoosejs.com/docs/api.html#model_Model.remove
इस मामले के लिए, कोड होगा: -
FBFriendModel.remove({ id : 333 }, function(err, callback){
console.log(‘Do Stuff’);
})
यदि आप MongoDB की प्रतिक्रिया की प्रतीक्षा किए बिना दस्तावेज़ निकालना चाहते हैं, तो कॉलबैक पास न करें, तो आपको रिटर्न क्वेरी पर निष्पादन को कॉल करने की आवश्यकता है
var removeQuery = FBFriendModel.remove({id : 333 });
removeQuery.exec();
आप हटाए गए फ़ंक्शन के भीतर सीधे क्वेरी का उपयोग कर सकते हैं, इसलिए:
FBFriendModel.remove({ id: 333}, function(err){});
आप हमेशा निर्मित समारोह में Mongoose का उपयोग कर सकते हैं:
var id = req.params.friendId; //here you pass the id
FBFriendModel
.findByIdAndRemove(id)
.exec()
.then(function(doc) {
return doc;
}).catch(function(error) {
throw error;
});
अद्यतन: .remove()मूल्यह्रास है लेकिन यह अभी भी पुराने संस्करणों के लिए काम करता है
YourSchema.remove({
foo: req.params.foo
}, function(err, _) {
if (err) return res.send(err)
res.json({
message: `deleted ${ req.params.foo }`
})
});
हटाने () विधि का उपयोग करके आप निकालने में सक्षम हो सकते हैं।
getLogout(data){
return this.sessionModel
.remove({session_id: data.sid})
.exec()
.then(data =>{
return "signup successfully"
})
}
यह मेरे लिए काम करता है, बस यह कोशिश करो:
const id = req.params.id;
YourSchema
.remove({_id: id})
.exec()
.then(result => {
res.status(200).json({
message: 'deleted',
request: {
type: 'POST',
url: 'http://localhost:3000/yourroutes/'
}
})
})
.catch(err => {
res.status(500).json({
error: err
})
});
Model.removeपदावनत है
सम्यक जैन के उत्तर के अनुसार, मैं Async Await का उपयोग करता हूं
let isDelete = await MODEL_NAME.deleteMany({_id:'YOUR_ID', name:'YOUR_NAME'});
मैं वास्तव में इस पैटर्न को async में पसंद करता हूं / सक्षम एक्सप्रेस / Mongoose एप्लिकेशन की प्रतीक्षा कर रहा हूं :
app.delete('/:idToDelete', asyncHandler(async (req, res) => {
const deletedItem = await YourModel
.findByIdAndDelete(req.params.idToDelete) // This method is the nice method for deleting
.catch(err => res.status(400).send(err.message))
res.status(200).send(deletedItem)
}))
db.collection.remove(<query>,
{
justOne: <boolean>,
writeConcern: <document>
})