mongodb mongodb-query aggregation-framework

mongodb - excluir campos en $ agregación de búsqueda



mongodb-query aggregation-framework (1)

Estoy consultando entre 3 colecciones que quiero excluir _id en todas partes en la salida

Mi salida es:

{ "_id" : ObjectId("5b6aed5f9bcdb5d4ae64aef5"), "userID" : "1", "skills" : [ { "_id" : ObjectId("5b766b5f1365a4940bb6050f"), "skillID" : "javaid", "skillname" : "जावा", "languageID" : "hindiid" }, { "_id" : ObjectId("5b766b8c1365a4940bb60535"), "skillID" : "pythonid", "skillname" : "पायथन", "languageID" : "hindiid" } ], "gender" : { "_id" : ObjectId("5b7687cd2a2329043e2383d5"), "genderID" : "femaleid", "gendername" : "महिला", "languageID" : "hindiid" } }

Consulta:

db.User.aggregate([ { "$match": { "userID":"1" }}, { "$lookup":{ "from": "Skill", "pipeline": [ { "$match": { "languageID": "hindiid", "skillID": { "$in": [ "javaid","pythonid" ] }}}, ], "as": "skills" }}, { "$lookup": { "from": "Gender", "pipeline": [ { "$match": { "languageID": "hindiid", "genderID" : "femaleid" }}, ], "as": "gender" }}, { "$unwind": { "path": "$gender", "preserveNullAndEmptyArrays": true }}, { "$project": { "userID": 1, "skills": 1, "gender": 1 }} ])

En la salida, cada objeto tiene _id Ejemplo de lista de skill Todos los objetos tienen _id Quiero excluir el campo _id todas _id . ¿Cómo puedo excluir?


En mongodb 3.6 puedes usar la proyección ( $project ) dentro de $lookup pipeline ... Algo como esto

db.User.aggregate([ { "$match": { "userID":"1" }}, { "$lookup":{ "from": "Skill", "pipeline": [ { "$match": { "languageID": "hindiid", "skillID": { "$in": [ "javaid","pythonid" ] }}}, { "$project": { "_id": 0 }} ], "as": "skills" }} ])