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

300
Visualizações
Incrustar campo raíz en un subdocumento dentro de una canalización de agregación

Tal vez alguien pueda ayudarme con la canalización de agregación de Mongo. Estoy tratando de poner un objeto en otro objeto, pero soy nuevo en Mongo y es muy difícil:

 { "_id" : ObjectId("5888a74f137ed66828367585"), "name" : "Unis", "tags" : [...], "editable" : true, "token" : "YfFzaoNvWPbvyUmSulXfMPq4a9QgGxN1ElIzAUmSJRX4cN7zCl", "columns" : [...], "description" : "...", "sites" : { "_id" : ObjectId("5888ae2f137ed668fb95a03d"), "url" : "www.....de", "column_values" : [ "University XXX", "XXX", "false" ], "list_id" : ObjectId("5888a74f137ed66828367585") }, "scan" : [ { "_id" : ObjectId("5888b1074e2123c22ae7f4d3"), "site_id" : ObjectId("5888ae2f137ed668fb95a03d"), "scan_group_id" : ObjectId("5888a970a7f75fbd49052ed6"), "date" : ISODate("2017-01-18T16:00:00Z"), "score" : "B", "https" : false, "cookies" : 12 } ] }

Quiero poner cada objeto en la matriz de "escaneo" en "sitios". Para que quede así:

 { "_id" : ObjectId("5888a74f137ed66828367585"), "name" : "Unis", "tags" : [...], "editable" : true, "token" : "YfFzaoNvWPbvyUmSulXfMPq4a9QgGxN1ElIzAUmSJRX4cN7zCl", "columns" : [...], "description" : "...", "sites" : { "_id" : ObjectId("5888ae2f137ed668fb95a03d"), "url" : "www.....de", "column_values" : [ "University XXX", "XXX", "false" ], "list_id" : ObjectId("5888a74f137ed66828367585"), "scan" : [ { "_id" : ObjectId("5888b1074e2123c22ae7f4d3"), "site_id" : ObjectId("5888ae2f137ed668fb95a03d"), "scan_group_id" : ObjectId("5888a970a7f75fbd49052ed6"), "date" : ISODate("2017-01-18T16:00:00Z"), "score" : "B", "https" : false, "cookies" : 12 } ] } }

¿Hay algún paso en la tubería de agregación para realizar esta tarea?

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

0

Con una sola tubería, no veo otra forma que especificar cada campo individualmente como:

 db.collection.aggregate([ { "$project": { "name": 1, "tags": 1, "editable": 1, "token": 1, "columns": 1, "description": 1, "sites._id": "$sites._id", "sites.url": "$sites.url" , "sites.column_values": "$sites.column_values" , "sites.list_id": "$sites.list_id", "sites.scan": "$scan" } } ])

Con MongoDB 3.4 y versiones posteriores, puede usar el paso de canalización $addFields en lugar de especificar todos los campos usando $project . La ventaja es que agrega nuevos campos a los documentos y genera documentos que contienen todos los campos existentes de los documentos de entrada y los campos recién agregados:

 db.collection.aggregate([ { "$addFields": { "sites._id": "$sites._id", "sites.url": "$sites.url" , "sites.column_values": "$sites.column_values" , "sites.list_id": "$sites.list_id", "sites.scan": "$scan" } }, { "$project": { "scan": 0 } } ])
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