Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

321
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!