$pop operatorn tar bort första eller sista elementet i arrayen, vilket inte nödvändigtvis är det rätta.
Om du vill ha ett specifikt element kan du $pull objektet med definierade kriterier:
model.registerCompany.findOneAndUpdate({companyKey:"a key"},
{$pull:{onlineEmployees:"John"}},
Du måste se till att värdet i arrayen är unikt för $pull
tar bort alla element som matchar namnet 'John'.
Om identiska värden finns i arrayen måste du använda $unset
och $
positionsoperator för att ställa in målelementvärdet till null
(tyvärr tar $unset inte bort element) och använd sedan $pull
för att ta bort elementet med null
värde. För att göra det måste du se till att ett giltigt värde inte kan vara null
. I så fall kan koden vara så här:
model.registerCompany.findOneAndUpdate({companyKey:"a key", onlineEmployees:"John"},{ $unset: { "onlineEmployees.$" : '' } } )
model.registerCompany.findOneAndUpdate({companyKey:"a key"},{ $pull: { "onlineEmployees" : null } } )