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

MongoDB:trova l'elemento minimo nell'array ed eliminalo

Se non sei limitato a fare in modo che la query sia in un unico passaggio, puoi provare:

passo 1) usa la funzione di aggregazione con gli operatori $unwind e $group per trovare l'elemento minimo per ogni documento

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

passaggio 2) il ciclo dei risultati e $estrae l'elemento dall'array

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