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

Rimuovi il documento nidificato con condizione in MongoDB

Il problema è che l'array di documenti secondari non è una raccolta, non puoi ordinare o fare qualcos'altro su di esso. Ma se hai accesso a qualsiasi interfaccia linguistica come JavaScript o altro è possibile. Devi solo estrarre l'elenco dei documenti secondari, ordinarli per altezza, ricordare il primo e quindi eseguire il comando per estrarlo dall'array in base al suo nome e altezza. Può essere fatto ad esempio usando questo codice JavaScript direttamente in MongoDB guscio:

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);
    })

Sospetto che la soluzione non sia la più elegante ma comunque funziona.