es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué la consulta de mongodb para encontrar documentos con dos valores en un arreglo no funciona?

Necesito encontrar documentos de mongodb con el array ‘productos’ que incluyan ambos valores ‘valor1’ y ‘valor2’.

¿Por qué funciona la primera consulta a continuación mientras que la segunda no?

Primera consulta: Correcta

db.person.find(
{
$and: [
{ segment: /a/i },
{ products: { $elemMatch: { productType: /value1/i } } },
{ products: { $elemMatch: { productType: /value2/i } } }
]
}
).count()

## Resultados: 474 (Correcto)

Segunda consulta: INCORRECTA

db.person.find(
{
segment: /a/i,
products: {
$elemMatch: { productType: /value1/i },
$elemMatch: { productType: /value2/i }
}
}
).count()

Resultados: 698 (Incorrecto)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La segunda consulta no funciona porque dentro del campo “productos”, el uso de múltiples condiciones “$elemMatch” implica que todas las condiciones deben ser satisfechas por el mismo elemento del array, lo cual no es posible en este caso ya que estamos buscando dos valores diferentes dentro del mismo array. La forma correcta de buscar tanto “valor1” como “valor2” dentro del array “productos” es utilizando el operador “$and” junto con condiciones de “$elemMatch” separadas para cada valor, como se muestra en la primera consulta.

Comments are closed.