FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
上面的方法似乎不管用。记录还在那里。
有人能修好吗?
FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
上面的方法似乎不管用。记录还在那里。
有人能修好吗?
当前回答
db.collection.remove(<query>,
{
justOne: <boolean>,
writeConcern: <document>
})
其他回答
小心findOne和删除!
User.findOne({name: 'Alice'}).remove().exec();
上面的代码删除了所有名为“Alice”的用户,而不仅仅是第一个用户。
顺便说一下,我更喜欢这样删除文档:
User.remove({...}).exec();
或者提供一个回调函数并省略exec()
User.remove({...}, callback);
如果只寻找一个要删除的对象,则可以使用
Person.findOne({_id: req.params.id}, function (error, person){
console.log("This object will get deleted " + person);
person.remove();
});
在本例中,Mongoose将根据匹配的req.params.id进行删除。
如果你知道文档的_id,你可以使用findByIdAndDelete(id),这是findOneAndDelete({_id: id})的简写。
import Question from '../models/Question';
const deleteQuestion = (questionId: string) => {
try {
Question.findByIdAndDelete(questionId);
} catch (e) {
console.error(e);
}
};
这里的questionId是documentId (_id)
如果你不喜欢迭代,那就试试
FBFriendModel.find({ id:333 }).remove( callback );
or
FBFriendModel.find({ id:333 }).remove().exec();
find返回一个Query,它有一个remove函数。
更新为Mongoose v5.5.3 - remove()现在已弃用。使用deleteOne(), deleteMany()或findOneAndDelete()代替。
我非常喜欢异步/等待功能的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)
}))