sql >> Base de Datos >  >> NoSQL >> MongoDB

Eliminar documento anidado con condición en MongoDB

El problema es que la matriz de subdocumentos no es una colección, no se puede ordenar ni hacer nada más en ella. Pero si tiene acceso a cualquier interfaz de idioma como JavaScript o de lo contrario, es posible. Solo necesita extraer la lista de subdocumentos, ordenarlos por altura, recordar el primero y luego ejecutar el comando para extraerlo de la matriz en función de su nombre y altura. Se puede hacer, por ejemplo, usando este código JavaScript directamente en MongoDB. 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);
    })

Sospecho que la solución no es la más elegante pero de todos modos funciona.