Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

309
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda