MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verschachteltes Dokument mit Bedingung in MongoDB entfernen

Das Problem ist, dass das Array von Filialdokumenten keine Sammlung ist, Sie können es nicht sortieren oder etwas anderes damit machen. Wenn Sie jedoch Zugriff auf eine beliebige Sprachschnittstelle wie JavaScript oder andere haben, ist dies möglich. Sie müssen nur die Liste der Unterdokumente extrahieren, sie nach Höhe sortieren, sich das erste merken und dann den Befehl ausführen, um es basierend auf seinem Namen und seiner Höhe aus dem Array zu ziehen. Dies kann beispielsweise mit diesem JavaScript-Code direkt in der MongoDB erfolgen Schale:

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

Ich vermute, die Lösung ist nicht die eleganteste, aber sie funktioniert trotzdem.