MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Syntaxe MongoDB $pull

Votre "secondArray" a une structure d'éléments imbriqués, vous devez donc identifier l'élément externe que vous souhaitez faire correspondre dans votre requête lorsque vous utilisez un $ positionnel opérateur dans la mise à jour. Vous avez essentiellement besoin de quelque chose comme ceci :

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

Il y a donc en fait "deux" valeurs d'identifiant que vous devez transmettre avec votre demande en plus de l'identifiant général du document. Même si cela est imbriqué, c'est correct puisque vous ne faites correspondre qu'au niveau "externe" et uniquement sur un tableau. Si vous avez essayé de faire correspondre la position sur plus d'un tableau, cela n'est pas possible avec l'opérateur positionnel.