MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB $ pull sintassi

Il tuo "secondArray" ha una struttura di elementi nidificati, quindi devi identificare l'elemento esterno che vuoi abbinare nella tua query quando usi un $ posizionale operatore nell'aggiornamento. Fondamentalmente hai bisogno di qualcosa del genere:

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

Quindi ci sono in effetti "due" valori ID che devi trasmettere con la tua richiesta oltre all'ID documento generale. Anche se questo è nidificato, va bene poiché stai abbinando solo al livello "esterno" e solo su un array. Se hai provato a far corrispondere la posizione su più di un array, questo non è possibile con l'operatore posizionale.