sql >> Databáze >  >> NoSQL >> MongoDB

Porovnejte prvky pole, odstraňte ten s nejnižším skóre

To lze provést v několika krocích. Prvním krokem je získat seznam dokumentů s minimálním skóre pomocí agregačního rámce s $match , $unwind a $group operátory, které zjednodušují vaše dokumenty, aby našli minimální skóre pro každý 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" } } } ] )

Druhým krokem je projít slovníkem výše a použít $pull operátor v aktualizačním dotazu k odstranění prvku z pole následovně:

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


  1. Komprese hex řetězce v Ruby/Rails

  2. SQL COALESCE() Vysvětleno

  3. Jak čekat, až bude tlačena položka seznamu mongoose?

  4. BSON::ObjectId vs Mongo::ObjectID