Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

323
Vistas
actualizando un documento usando el operador $max en matrices

tengo el siguiente documento:

 { _id: 12, item: 'envelope', qty: ISODate("2021-12-05T00:00:00.000Z"), arrayField: [ 128, 190, 1 ] }

y trato de actualizarlo usando este comando

 products> db.products.update({_id:12},{$max : { arrayField : [1,190,1879]} })

la salida es la siguiente:

 { acknowledged: true, insertedId: null, matchedCount: 1, modifiedCount: 0, upsertedCount: 0 }

Realmente no entiendo cómo se realiza la comparación entre el arrayField existente y el nuevo. Ambos son matrices, por lo que debería haber algún tipo de comparación en cada elemento, pero ¿cómo funciona exactamente?

De la documentación leí esto:

Con matrices, una comparación menor que o una ordenación ascendente compara el elemento más pequeño de las matrices, y una comparación mayor que o una ordenación descendente compara el elemento más grande de las matrices. Como tal, cuando se compara un campo cuyo valor es una matriz de un solo elemento (p. ej., 1 ) con campos que no son matrices (p. ej., 2), la comparación es entre 1 y 2. Una comparación de una matriz vacía (p. ej., [ ]) trata el matriz vacía como menos que nulo o como un campo faltante.

Pero todavía no entiendo exactamente... ¿Alguien podría dar un ejemplo en mi caso? Gracias por adelantado

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

MongoDB toma el mínimo o el máximo, para representar la matriz en las comparaciones, para los operadores de consulta.

Números

 {"ar" : [1,2,3]} (<= ar 1) => (<= min(1,2,3) 3) => (<= 1 3) true (>= ar 3) => (>= max(1,2,3) 3) => (<= 3 3) true (= ar 2) => true because it contains the element For empty arrays either < or > its always false compared to a number

Matrices (nuevamente tome el min si <, o max it >)

 {"ar" : [1,2,3]} (<= ar [0 1 2 3]) false because its like min(ar)=1 <min(0,1,2,3)=0 (= ar [1]) false we need all elements =

Para la actualización del operador $max

 if both are arrays => elements are compared one by one. max [1 2 3] [5] => [5] max [1 2] [1 2 -100] => [1 2 -100]

Esos son solo para los operadores de consulta $gte,$gt,$lt,$lte, $eq .
Los agregados con los mismos nombres son estrictos y no funcionan así.

* No es completo porque tenemos muchos tipos, creo que los anteriores están bien, la respuesta podría ayudar, era grande para encajar en los comentarios.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda