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

MongoDB:Finden Sie das kleinste Element im Array und löschen Sie es

Wenn Sie nicht darauf beschränkt sind, die Abfrage in einem einzigen Schritt auszuführen, können Sie Folgendes versuchen:

Schritt 1) ​​Verwenden Sie die Aggregatfunktion mit den $unwind- und $group-Operatoren, um das kleinste Element für jedes Dokument zu finden

myresults = db.megas.aggregate( [ { "$unwind": "$items" },  
    {"$group": { '_id':'$_id' , 'minitem': {'$min': "$items.item" } } } ] )

Schritt 2) Schleife durch die Ergebnisse und $ziehe das Element aus dem Array

for result in myresults['result']:
    db.megas.update( { '_id': result['_id'] }, 
        { '$pull': { 'items': { 'item': result['minitem'] } } } )