MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Remover documento aninhado com condição no MongoDB


O problema é que a matriz de subdocumentos não é uma coleção, você não pode classificar ou fazer outra coisa nela. Mas se você tiver acesso a qualquer interface de linguagem como JavaScript ou então é possível. Você só precisa extrair a lista de subdocumentos, classificá-los por altura, lembrar o primeiro e depois executar o comando para puxá-lo do array com base em seu nome e altura. Concha:
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);
    })

Suspeito que a solução não seja a mais elegante, mas de qualquer maneira funciona.