sql >> Database >  >> NoSQL >> MongoDB

Verwijder genest document met voorwaarde in MongoDB

Het probleem is dat de reeks subdocumenten geen verzameling is, je kunt er niet op sorteren of er iets anders op doen. Maar als je toegang hebt tot een taalinterface zoals JavaScript of anders is het mogelijk. U hoeft alleen een lijst met subdocumenten uit te pakken, ze op hoogte te sorteren, de eerste te onthouden en vervolgens de opdracht uit te voeren om deze uit de array te halen op basis van de naam en hoogte. Het kan bijvoorbeeld worden gedaan door deze JavaScript-code rechtstreeks in de MongoDB te gebruiken schaal:

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

Ik vermoed dat de oplossing niet de meest elegante is, maar het werkt in ieder geval.




  1. mongoose .js-model zonder te exporteren, waarvoor in de helmknop nog steeds gewerkt wordt volgens schema

  2. ruby redis client scan vs sleutels

  3. Peering instellen tussen MongoDB Atlas en Google App Engine Standard Environment Node App

  4. Uitgeschakelde bewerking mislukt voor MongoMapper-model, kan sleutel niet verwijderen/verwijderen van model