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

73
Visualizações
Consulta para devolver un campo de un json anidado usando MongoDB

Mi base de datos tiene datos en el siguiente formato:

 { "_id" : ObjectId( "abcd" ), "coordinate" : [somevalue, somevalue], "value" : [ { "time" : 1, "characteristics" : "pqrs" }, { "time" : 10, "characteristics" : "pqrs" } ] }

Quiero encontrar la coordenada más cercana del campo y un tiempo que sea menor o igual a un valor dado.

Actualmente estoy usando esta consulta:

 db.collection.aggregate({ coordinate: { $geoNear: [latitude, longitude], $maxDistance: 10 }, "value.time": { $lte: 5 } })

Este devolvió la entrada completa, pero lo que quería es el campo:

 { "time" : 1, "characteristics" : "pqrs" }

¿Es posible incluso devolver este campo? ¿Qué pasa si hay varios resultados y solo quiero el que está más cerca de mi entrada value.time ?

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

0

Puede realizar una agregación a:

  • $match elementos con la coordinate y value.time especificados
  • Matriz de value $filter para eliminar todo <5
  • matriz de valor $unwind
  • $group por valor máximo

consulta es:

 db.collection.aggregate({ $match: { coordinate: { $geoNear: [0, 0], $maxDistance: 10 }, "value.time": { $lte: 5 } } }, { $project: { value: { $filter: { input: "$value", as: "value", cond: { $lte: ["$$value.time", 5] } } } } }, { $unwind: "$value" }, { $group: { _id: "$_id", time: { $max: "$value.time" }, characteristics: { $first: "$value.characteristics" } } })

Salida de muestra:

 { "_id" : ObjectId("588a8c3080a14de2d654eb7b"), "time" : 4, "characteristics" : "pqrs" } { "_id" : ObjectId("588a89327fe89686fd2210b2"), "time" : 1, "characteristics" : "pqrs" }
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