source

Node.js Mongoose를 사용하여 문서를 삭제하려면 어떻게 해야 합니까?

goodcode 2023. 1. 19. 21:26
반응형

Node.js Mongoose를 사용하여 문서를 삭제하려면 어떻게 해야 합니까?

FBFriendModel.find({
    id: 333
}, function (err, docs) {
    docs.remove(); //Remove all the documents that match!
});

위의 것은 효과가 없는 것 같습니다.기록은 아직 남아있어

누가 고칠 수 있어요?

반복하고 싶지 않다면, 시도해봐.

FBFriendModel.find({ id:333 }).remove( callback );

또는

FBFriendModel.find({ id:333 }).remove().exec();

mongoose.model.find함수를 가진 쿼리를 반환합니다.

Mongoose v5.5.3 업데이트는 현재 권장되지 않습니다.사용하다deleteOne(),deleteMany()또는findOneAndDelete() instead.

업데이트: Mongoose 버전 (5.5.3)

remove()는 권장되지 않으며 대신 deleteOne(), delete Many() 또는 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

자세한 내용은 mongoose API 문서를 참조하십시오.

docs는 문서의 배열입니다.그래서 이 제품에는mongooseModel.remove()방법.

배열의 각 문서를 개별적으로 반복 및 제거할 수 있습니다.

또는 (아마도) 고유 ID로 문서를 찾고 있는 것처럼 보이므로 - 사용findOne대신find.

이것은 버전 3.8.1에서 가장 좋은 버전입니다.

MyModel.findOneAndRemove({field: 'newValue'}, function(err){...});

또한 DB 콜은 1회만 필요합니다.아무것도 수행하지 않는 경우에 사용합니다.remove검색 및 제거 작업보다 우선합니다.

remove()는 폐지되었습니다.사용하다deleteOne(),deleteMany()또는bulkWrite().

사용하는 코드

TeleBot.deleteMany({chatID: chatID}, function (err, _) {
                if (err) {
                    return console.log(err);
                }
            });

간단히 하다

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();

일반화하기 위해 다음을 사용할 수 있습니다.

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
});

하나 찾아서 제거할 때 주의하세요!

  User.findOne({name: 'Alice'}).remove().exec();

의 코드는 첫 번째 사용자가 아닌 'Alice'라는 이름의 모든 사용자를 삭제합니다.

덧붙여서, 다음과 같은 문서를 삭제하는 것을 선호합니다.

  User.remove({...}).exec();

또는 콜백을 제공하고 exec()을 생략합니다.

  User.remove({...}, callback);
model.remove({title:'danish'}, function(err){
    if(err) throw err;
});

참고 자료: http://mongoosejs.com/docs/api.html#model_Model.remove

삭제할 개체를 하나만 찾는 경우

Person.findOne({_id: req.params.id}, function (error, person){
        console.log("This object will get deleted " + person);
        person.remove();

    });

이 예에서는 Mongoose는 일치하는 req.params.id에 따라 삭제됩니다.

.remove()와 같이 동작합니다..find():

MyModel.remove({search: criteria}, function() {
    // removed.
});

나는 약속 표기법을 선호한다. 예를 들어, 당신이 필요한 곳에.

Model.findOneAndRemove({_id:id})
    .then( doc => .... )

문서를 삭제할 때, 다음을 사용하는 것이 좋습니다.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();

제거 기능 내에서 쿼리를 직접 사용하면 다음과 같은 작업을 수행할 수 있습니다.

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;
    });

데트트 update:.remove()에서는 여전히 합니다.

YourSchema.remove({
    foo: req.params.foo
}, function(err, _) {
    if (err) return res.send(err)
    res.json({
        message: `deleted ${ req.params.foo }`
    })
});

비동기/대기 지원 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)
}))

remove() 메서드를 사용하여 삭제할 수 있습니다.

getLogout(data){
        return this.sessionModel
        .remove({session_id: data.sid})
        .exec()
        .then(data =>{
            return "signup successfully"
        })
    }

Samyak Jain의 답변에 따르면, 나는 비동기 대기를 사용합니다.

let isDelete = await MODEL_NAME.deleteMany({_id:'YOUR_ID', name:'YOUR_NAME'});

이 방법은 효과가 있었습니다.이것만 시도해 보세요.

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
        })
      });

하나의 문서를 삭제하려면 deleteOne() 또는 remove()를 single:true와 함께 사용하고 delete Many() 또는 remove()를 사용하여 여러 문서를 삭제합니다.

  1. deleteOne() 사용
    syntax
    Model.deleteOne({conditions},function(err){});

    Example
     Model.deleteOne({title:"hi"},function(err){
        if(err)
        {
            res.send(err);
        }
        else{
            res.send("deleted");
        }
    });

2. remove() 사용

    syntax
    Model.remove({conditions},{single:true},function(err){});

    Example
     Model.remove({title:"hi"},{single:true},function(err){
        if(err)
        {
            res.send(err);
        }
        else{
            res.send("deleted");
        }
    });

3. delete Many() 사용

syntax
Model.deleteMany({conditions},function(err){});

    Example
     Model.deleteMany({title:"hi"},function(err){
        if(err)
        {
            res.send(err);
        }
        else{
            res.send("deleted");
        }
    });
  1. remove() 사용
 syntax
    Model.remove({conditions},function(err){});

    Example
     Model.remove({title:"hi"},function(err){
        if(err)
        {
            res.send(err);
        }
        else{
            res.send("deleted");
        }
    });

있으면_id 가능한 입니다.findByIdAndDelete(id)은 리고아아아아아 and '어느 정도'는요.findOneAndDelete({ _id: id }).

import Question from '../models/Question';

const deleteQuestion = (questionId: string) => {
    try {
        Question.findByIdAndDelete(questionId);
    } catch (e) {
        console.error(e);
    }
};

(여기서)questionId documentIddocumentId)_id)

db.collection.remove(<query>,
 {
  justOne: <boolean>,
  writeConcern: <document>
})

언급URL : https://stackoverflow.com/questions/5809788/how-do-i-remove-documents-using-node-js-mongoose

반응형