2 Stimmen

Entfernen eines Elements aus einem Array in mongodb

Ich möchte ein bestimmtes Element aus Array in Mongodb-Dokument gespeichert zu entfernen. Ich verwende dies:

 model.registerCompany.findOneAndUpdate({companyKey:"a key"},
    {$pop:{onlineEmployees:"John"}},
    function(err,doc){
    if(!err)
        console.log("Online list modified: ",doc);
    else
        console.log("Online list modified error :",err);
});

Aber ich bin nicht sicher, ob die $pop entfernt das spezifische Element "John" aus array(onlineEmployees) oder nur Pop aus dem letzten Element aus ihm.

Mache ich es richtig oder gibt es einen anderen Weg, es zu tun?

Ich denke, ich habe die Antwort $pull wird für diesen Zweck verwendet, wie hier im Link erklärt: http://docs.mongodb.org/manual/reference/operator/pull/#_S_pull

13voto

coderLMN Punkte 3046

En $pop Operator entfernt das erste oder letzte Element des Arrays, das nicht unbedingt das richtige sein muss.

Wenn Sie ein bestimmtes Element wünschen, können Sie $Ziehen den Artikel mit definierten Kriterien:

   model.registerCompany.findOneAndUpdate({companyKey:"a key"},
    {$pull:{onlineEmployees:"John"}},

Sie müssen sicherstellen, dass der Wert im Array eindeutig ist, denn $pull entfernt jedes Element, das dem Namen 'John' entspricht.

Wenn identische Werte in dem Array vorhanden sind, müssen Sie $unset y $ Positionsoperator, um den Zielelementwert auf null (leider werden mit $unset keine Elemente entfernt) und verwenden Sie dann $pull zum Entfernen des Elements mit null Wert. Dazu müssen Sie sicherstellen, dass der gültige Wert nicht null . In diesem Fall könnte der Code wie folgt lauten:

model.registerCompany.findOneAndUpdate({companyKey:"a key", onlineEmployees:"John"},{ $unset: { "onlineEmployees.$" : '' } } ) 
model.registerCompany.findOneAndUpdate({companyKey:"a key"},{ $pull: { "onlineEmployees" : null } } )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X