MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB $Pull-Syntax

Ihr "secondArray" hat eine verschachtelte Elementstruktur, daher müssen Sie das äußere Element, das Sie in Ihrer Abfrage abgleichen möchten, identifizieren, wenn Sie ein positionelles $ verwenden Betreiber im Update. Sie brauchen im Grunde so etwas:

bulk.find({ 
    "_id": new mongo.ObjectID(req.session._id), 
    "secondArray._id": "7423" 
}).update({
    "$pull": { 
        "firstArray": { "_id": "153" },
        "secondArray.$.firstArrayIds": 153
    }
});

Es gibt also tatsächlich "zwei" ID-Werte, die Sie zusätzlich zur allgemeinen Dokument-ID mit Ihrer Anfrage übergeben müssen. Obwohl dies verschachtelt ist, ist es in Ordnung, da Sie nur auf der "äußeren" Ebene und nur auf einem Array übereinstimmen. Wenn Sie versucht haben, die Position auf mehr als einem Array abzugleichen, ist dies mit dem Positionsoperator nicht möglich.