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

Fjern indlejret dokument med betingelse i MongoDB

Problemet er, at rækken af ​​underdokumenter ikke er en samling, du kan ikke sortere eller gøre noget andet på det. Men hvis du har adgang til en hvilken som helst sproggrænseflade som JavaScript ellers er det muligt. Du skal bare udtrække en liste over underdokumenter, sortere dem efter højde, huske det første og derefter køre kommandoen for at trække det fra arrayet baseret på dets navn og højde. Det kan for eksempel gøres ved at bruge denne JavaScript-kode direkte i MongoDB skal:

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

Jeg formoder, at løsningen ikke er den mest elegante, men den virker alligevel.




  1. Hvordan kan jeg bruge MongoDB til at finde alle dokumenter, der har et felt, uanset værdien af ​​dette felt?

  2. Fjern flere dokumenter fra mongo i en enkelt forespørgsel

  3. Gem _Id som objekt eller streng i MongoDB?

  4. Gentager gennem en række strenge, hentet fra MongoDB