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

Sammenlign array-elementer, fjern den med den laveste score

Dette kan gøres i et par trin. Det første trin er at få fat i en liste over dokumenterne med minimumscore ved at bruge aggregeringsrammen med $match , $unwind og $group operatører, der strømliner dine dokumenter for at finde minimumscore for hvert dokument:

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

Det andet trin er at gå gennem ordbogen ovenfor og bruge $pull operatoren i opdateringsforespørgslen for at fjerne elementet fra arrayet som følger:

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


  1. importerer JSON til mongoDB ved hjælp af pymongo

  2. Nodejs paginering

  3. Spring og MongoDB:SAXParseException, mens du læser Bean Definitions

  4. MongoDB fusionerer relaterede samlingselementer med andre samlingsresultater