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

Supprimer le document imbriqué avec condition dans MongoDB

Le problème est que le tableau de sous-documents n'est pas une collection, vous ne pouvez pas trier ou faire autre chose dessus. Mais si vous avez accès à n'importe quelle interface de langage comme JavaScript ou autre, c'est possible. Il vous suffit d'extraire la liste des sous-documents, de les trier par hauteur, de vous souvenir du premier, puis d'exécuter la commande pour l'extraire du tableau en fonction de son nom et de sa hauteur. Cela peut être fait par exemple en utilisant ce code JavaScript directement dans MongoDB. coque :

var min = 0; var name = "";
db.animals.find({ query:{"_id" : 0} }).forEach(
function(record){
    var sets = record.pets; 
    min = sets[0].height;
    sets.forEach(function(set){
        if(set.height <= min) 
            {min=set.height;
            name=set.name;}
            });
    print(min);
    print(name);    
    query = {"_id": 0}
    update = { "$pull" : { "pets" : { "name" : name } } };
    db.animals.update(query, update);
    })

Je soupçonne que la solution n'est pas la plus élégante mais de toute façon ça marche.