MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:encontre o elemento mínimo na matriz e exclua-o


Se você não estiver restrito a ter a consulta em uma única etapa, tente:

passo 1) use a função de agregação com os operadores $unwind e $group para encontrar o item mínimo para cada documento
myresults = db.megas.aggregate( [ { "$unwind": "$items" },  
    {"$group": { '_id':'$_id' , 'minitem': {'$min': "$items.item" } } } ] )

passo 2) o loop pelos resultados e $ puxe o elemento do array
for result in myresults['result']:
    db.megas.update( { '_id': result['_id'] }, 
        { '$pull': { 'items': { 'item': result['minitem'] } } } )