sql >> Database >  >> NoSQL >> MongoDB

Vergelijk array-elementen, verwijder degene met de laagste score

Dit kan in een paar stappen. De eerste stap is het verkrijgen van een lijst van de documenten met de minimale score door gebruik te maken van het aggregatieraamwerk met $match , $unwind en $group operators die uw documenten stroomlijnen om de minimumscore voor elk document te vinden:

lowest_scores_docs = db.school.aggregate([ 
    { "$match": {"scores.type": "homework"} },
    { "$unwind": "$scores" },  { "$match": {"scores.type": "homework"} },
    { "$group": { "_id":"$_id", "lowest_score": {"$min": "$scores.score" } } } ] )

De tweede stap is om door het bovenstaande woordenboek te bladeren en de te gebruiken $pull operator in de update-query om het element als volgt uit de array te verwijderen:

for result in lowest_scores_docs["result"]:
    db.school.update({ "_id": result["_id"] }, 
        { "$pull": { "scores": { "score": result["lowest_score"] } } } )


  1. Mongodb NoRM en POCO

  2. Hoe kan ik door live MongoDB-gegevens bladeren of deze opvragen?

  3. MongoDB c#-stuurprogramma - Kan een veld met de naam Id geen Id zijn?

  4. Staat mangoest gelijktijdig meerdere databaseverzoeken toe?