如何使用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 }
}
}
);