답변:
당신이 반복하는 기분하지 않는 경우, 시도 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()
필요한, 그것을 사용 여부에이 부작용은?
업데이트 : 몽구스 버전 (5.5.3)
remove ()는 더 이상 사용되지 않으며 대신 deleteOne (), deleteMany () 또는 bulkWrite ()를 사용할 수 있습니다.
현재 문서를 찾은 다음 제거하는 것이 아니라 방법을 "mongoose": ">=2.7.1"
사용하여 직접 문서를 제거 할 수 있습니다 .remove()
.
예를보십시오 :
Model.remove({ _id: req.body.id }, function(err) {
if (!err) {
message.type = 'notification!';
}
else {
message.type = 'error';
}
});
최신 정보:
mongoose 현재 3.8.1
문서를 직접 제거 할 수있는 몇 가지 방법이 있습니다.
remove
findByIdAndRemove
findOneAndRemove
자세한 내용은 몽구스 API 문서 를 참조하십시오 .
remove(query)
실수로 통과하면 전체 컬렉션을 비울 수 있습니다query = {}
. 따라서 하나의 문서 findOneAndRemove(query)
만 제거하는 것이 좋습니다.
Model.remove({ _id: 'whatever' }).exec().then(...)
docs
문서의 배열입니다. mongooseModel.remove()
방법 이 없습니다 .
배열의 각 문서를 개별적으로 반복하고 제거 할 수 있습니다.
또는- findOne
대신 (아마도) 고유 ID로 문서를 찾는 것처럼 보이기 때문 입니다 find
.
이것은 나를 위해 버전 3.8.1에서 최고입니다.
MyModel.findOneAndRemove({field: 'newValue'}, function(err){...});
그리고 하나의 DB 호출 만 필요합니다. 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
});
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])
제거에 대한 API 설명서를 참조하십시오 :-
http://mongoosejs.com/docs/api.html#model_Model.remove
이 경우 코드는 다음과 같습니다.
FBFriendModel.remove({ id : 333 }, function(err, callback){
console.log(‘Do Stuff’);
})
MongoDB의 응답을 기다리지 않고 문서를 제거하려면 콜백을 전달하지 않으면 반환 된 쿼리에서 exec를 호출해야합니다.
var removeQuery = FBFriendModel.remove({id : 333 });
removeQuery.exec();
최신 정보: .remove()
감가 상각되었지만 여전히 이전 버전에서 작동합니다.
YourSchema.remove({
foo: req.params.foo
}, function(err, _) {
if (err) return res.send(err)
res.json({
message: `deleted ${ req.params.foo }`
})
});
remove () 메소드를 사용하면 제거 할 수 있습니다.
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
더 이상 사용되지 않음
Samyak Jain의 답변에 따라 Async Await를 사용합니다.
let isDelete = await MODEL_NAME.deleteMany({_id:'YOUR_ID', name:'YOUR_NAME'});
async / await 가능 Express / 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>
})