如何使用mongoose按特定值从数组中删除对象

如何使用mongoose按特定值从数组中删除对象,mongoose,Mongoose,我想检查contacts数组中是否存在该id,并使用mongoose提取包含该id的对象。例如,如果我获得id-5fe1c307330e711a6024697f,则应删除第一个对象。我试了一下,但什么也没发生。 数据结构如下所示: { _id: (id), contacts: [ 0: { _id: (id), id: '5fe1c307330e711a6024697f' }

我想检查
contacts
数组中是否存在该id,并使用mongoose提取包含该id的对象。例如,如果我获得
id-5fe1c307330e711a6024697f
,则应删除第一个对象。我试了一下,但什么也没发生。 数据结构如下所示:

{
     _id: (id),
     contacts: [
         0: {
             _id: (id),
             id: '5fe1c307330e711a6024697f'
         }
         1: {
             _id: (id),
             id: '21412412412412412421421'
         }
}
我试过的代码是:

const { contactId, conversationId } = req.body;
const conversation = await Conversation.findById(conversationId);
const existingContacts = conversation.contacts;
existingContacts.map(existingContact => {
    if (existingContact.id === contactId) {
        let deletedContact = Conversation.findByIdAndUpdate(conversationId, {
            $pull: {
                  contacts: { id: contactId }
            }
        }
    }
})

它很简单,不需要映射,它将删除/拉取联系人ID

const { contactId, conversationId } = req.body;
let deletedContact = Conversation.findByIdAndUpdate(
    conversationId,
    {
        $pull: {
            contacts: { _id: contactId }
        }    
    }
);