Estoy usando NodeJS y mongoose .
Tengo dos colecciones denominadas perfiles y empresas con el siguiente esquema.
ProfileSchema = new Schema ({
first_name: {type: String, required: true},
last_name: {type: String, required: true},
age: {type: Number, required: true},
business_ids: [
{type: schema.Types.ObjectId, ref: 'business'}
]
});
Similar,
BusinessSchema = new Schema ({
title: {type: String, required: true},
type: {type: String, required: true},
address: {type: String, required: true},
});
Una respuesta de muestra cuando mi perfil de consulta es
profiles.find().populate("business_ids")
devoluciones
{
"_id": "5bf5fbef16a06667027eecc2",
"first_name": "Asad",
"last_name": "Hayat",
"age": "26",
"business_ids": [
{
"_id": "5ae14d2e124da839884ff939",
"title": "Business 1",
"type": "B Type",
"address": "Business 1 Address"
},
{
"_id": "5ae14d2e124da839884ff93b",
"title": "Business 2",
"type": "C Type",
"address": "Business 2 Address"
}
],
"__v": 0
}
Quiero que el campo business_ids siga siendo el mismo en la colección, pero cámbiele el nombre a empresas en mis respuestas a la consulta. Cómo puedo conseguir esto.
puede usar la canalización agregada con en $lookup
lugar de buscar con poblar
algo como esto
db.profile.aggregate([
{
$lookup: {
from: "business",
localField: "business_ids",
foreignField: "_id",
as: "businesses"
}
},
{
$project: {
business_ids: 0 // this is to remove the business_ids array of ObjectIds, if you want to keep it, you can omit this $project step
}
}
])
puedes probarlo aquí Mongo Playground
Espero eso ayude
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras