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

258
Visualizações
Cómo consultar documentos de MongoDb utilizando los índices de matrices incrustadas

Estoy tratando de aprender a usar consultas mongo para llegar a lo más profundo de un árbol de datos. Específicamente, estoy tratando de eliminar el objeto debajo de {"object": 'to remove'}

 { "_id" : ObjectId("7840f22736341b09154f7ebf"), "username" : "nmay", "fname" : "Nate", "lname" : "May", "data" : [ { "monthNum" : 1, "year" : 2016, "days" : [ { "date" : "2016-01-01T06:00:00.000Z", "type1" : [], "type2" : [] }, { "date" : "2016-01-02T06:00:00.000Z", "type1" : [ {"object": 'to remove'} ], "type2" : [] } ] } ] }

hasta ahora sé cómo consultar el _id del usuario, pero no estoy seguro de cómo eliminar el objeto deseado usando los índices en cada matriz. En este ejemplo, quiero eliminar data[0].days[1].type1[0]

Aquí está la consulta que tengo hasta ahora:

 app.delete('/user/:id/data/:monthIndex/days/:dayIndex/type1/:type1Index', function (req, res, next) { var monthIndex = parseInt(req.params.monthIndex); // these console the value properly var dayIndex = parseInt(req.params.dayIndex); // -1 is applied to the parameter to translate to array position var type1Index = parseInt(req.params.type1Index); db.users.update( { _id: mongojs.ObjectId(req.params.id) }, { $pull: data.monthIndex.days.dayIndex.type1.type1Index } ); }

me da el error

ReferenceError: los datos no están definidos

¿Alguien puede demostrar cómo puedo pasar esta consulta a mis parámetros de índice para eliminar el objeto deseado?

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

0

Desafortunadamente, no hay forma de eliminar un elemento de matriz por su índice numérico con una sola operación en MongoDB. Para hacer esto, primero debe desactivar los elementos deseados y luego eliminar los campos resultantes con valores null .

Su código debería ser algo como esto:

 db.users.update( { _id : mongojs.ObjectId(req.params.id) }, { $unset : { 'data.0.days.1.type1.0' : 1 } } ); db.users.update( { _id : mongojs.ObjectId(req.params.id) }, { $pull : { 'data.0.days.1.type1' : null } } );

Editar por @bob: para pasar los parámetros, debe crear la cadena de consulta, que es fea:

 var unset = {}; unset['$unset'] = {}; unset.$unset['data.' + req.params.monthIndex + '.days.' + req.params.dayIndex + '.foods.' + req.params.foodIndex] = 1; db.users.update( { _id : mongojs.ObjectId(req.params.id) }, unset ); var pull = {}; pull['$pull'] = {}; pull.$pull['data.' + req.params.monthIndex + '.days.' + req.params.dayIndex + '.foods'] = null; db.users.update( { _id : mongojs.ObjectId(req.params.id) }, pull );
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