sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:encuentre el elemento mínimo en la matriz y elimínelo

Si no está restringido a que la consulta se realice en un solo paso, puede intentar:

paso 1) use la función agregada con los operadores $unwind y $group para encontrar el elemento mínimo para cada documento

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

paso 2) el bucle a través de los resultados y $saca el elemento de la matriz

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