Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

270
Visualizações
Mongo devuelve las entradas que no coinciden por $IN

¿Hay alguna forma de que Mongo devuelva alguna indicación (bandera, campo, etc.) si una entrada en $in no coincide con ningún docs ?

Por favor vea mi Mongo Playgrond

Eso solo devuelve con éxito todos los documentos impares.

¿Cómo puedo tener alguna indicación de que no se encontraron los pares?

Me gustaría hacer esto dentro de Mongo. Obtengo que puedo iterar a través de los resultados en JS y realizar una diff .

Fwiw, este $in realidad será la primera etapa de un $match en un aggregate . Así que tal vez pueda usar algo como addFields para las diferencias.

¡Gracias!

Entonces, mi resultado deseado podría ser que cada coincidencia negativa aún obtenga un documento de retorno ... pero con una nueva propiedad found:false como la siguiente. Entonces... en mi ejemplo, los números pares no son fundados y sería genial ver algo como...

 { "_id": ObjectId("5a934e000102030405100006"), "key": 2, "found": false }, { "_id": ObjectId("5a934e000102230405000006"), "key": 4, "found": false }, { "_id": ObjectId("5a934e000122030405000006"), "key": 6, "found": false }

Tal vez, también sería más limpio poner found como verdadero para todas las coincidencias positivas.

O... tal vez devuelva un subarreglo de los que no coinciden (que podría ser más limpio en el procesamiento posterior)

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No hay una forma directa de hacer esto en MongoDB. Puede probar la consulta de agregación para manejar los requisitos personalizados.

Aquí he agregado una consulta de agregación para lograr su requisito, pero no estoy seguro de cuáles son sus datos exactos,

Aporte:

 [ { "key": 1 }, { "key": 2 }, { "key": 3 }, { "key": 4 }, { "key": 50 }, { "key": 6 }, { "key": 7 } ]
  • $match su $in condiciones
  • $facet para separar resultados y números no encontrados
  • la clave de result es obtener los resultados del documento final
  • notFound es encontrar las claves no encontradas
  • $group por nulo y obtener claves únicas del resultado usando $addToSet
  • $setDifference para obtener la diferencia de dos matrices, primero es su entrada y el segundo número de resultado disponible
  • $project para mostrar los campos obligatorios
 db.collection.aggregate([ { $match: { key: { $in: [1, 3, 5, 7] } } }, { $facet: { result: [], notFound: [ { $group: { _id: null, key: { $addToSet: "$key" } } }, { $project: { key: { $setDifference: [[1, 3, 5, 7], "$key"] } } } ] } } ])

Patio de recreo

Resultado:

 [ { "notFound": [ { "key": [5] } ], "result": [ { "key": 1 }, { "key": 3 }, { "key": 7 } ] } ]

El segundo enfoque , según su muestra de resultados esperados,

  • $addFields para agregar un nuevo campo found
  • $in para verificar que la key tiene valor en la matriz proporcionada, si es así, devuelva verdadero, de lo contrario, falso
 db.collection.aggregate([ { $addFields: { found: { $in: ["$key", [1, 3, 5, 7]] } } } ])

Patio de recreo

Resultado:

 [ { "key": 1, "found": true }, { "key": 2, "found": false }, { "key": 3, "found": true }, { "key": 4, "found": false }, { "key": 50,"found": false }, { "key": 6, "found": false }, { "key": 7, "found": true } ]
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda