• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

270
Views
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?

about 3 years ago · Santiago Trujillo
1 answers
Answer question

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 } } ])
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error