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

Comment écrire une requête de mise à jour dans mongodb pour un tableau profondément imbriqué?

Essayez le positional $ opérateur dans votre mise à jour qui agit comme un espace réservé pour le premier élément qui correspond au document de requête, et lorsque vous l'utilisez, assurez-vous que les cards Le champ de tableau doit apparaître dans le cadre du document de requête. Dans votre cas, vous voudriez ajouter une card document dans les 'cards' tableau, mais seulement si le cardId n'existe pas :

var query = {        
    "cardInfo.cards.cardId": { "$nin": ["somecardid"] }
};
var update = {        
    "$push": {
        "cardInfo": { "customerId": "25934285649875" },
        "cardInfo.$.cards": {
            cardId: "somecardid",
            cardType: "type",
            createdAt: new Date().toISOString(),
            isActive: true
        }
    }
};

Customer.update(query, update, function (err, result) { ... });