node.js - tutorial - Mongodb $ lookup No funciona con_id
mongoose update (2)
Finalmente encontré la solución, es un problema con mi esquema en mangosta con el ObjectId
Yo cambio esto
var Schema = new Schema({
name: { type: String, required: true},
incharge: { type: String, required: true},
});
con este
var Schema = new Schema({
name: { type: String, required: true},
incharge: { type: mongoose.Schema.ObjectId, required: true},
});
y está trabajando
Intentaremos con esta consulta, devuelve la búsqueda está vacía
db.getCollection(''tests'').aggregate([
{$match: {typet:''Req''}},
{$project: {incharge:1}},
{$lookup:{
from: "users",
localField: "incharge", //this is the _id user from tests
foreignField: "_id", //this is the _id from users
as: "user"
}}
])
volver json
[
{
"_id": "57565d2e45bd27b012fc4db9",
"incharge": "549e0bb67371ecc804ad23ef",
"user": []
},
{
"_id": "57565d2045bd27b012fc4cbb",
"incharge": "549e0bb67371ecc804ad21ef",
"user": []
},
{
"_id": "57565d2245bd27b012fc4cc7",
"incharge": "549e0bb67371ecc804ad24ef",
"user": []
}
]
Intento con esta publicación, pero no pasó nada cadena de proyecto de agregación MongoDB a ObjectId y con esta búsqueda $ MongoDB con _id como foreignField en PHP
ACTUALIZAR
este es el Documento "usuarios"
{
"_id" : ObjectId("549e0bb67371ecc804ad24ef"),
"displayname" : "Jhon S."
},
{
"_id" : ObjectId("549e0bb67371ecc804ad21ef"),
"displayname" : "George F."
},
{
"_id" : ObjectId("549e0bb67371ecc804ad23ef"),
"displayname" : "Franc D."
}
Su consulta de búsqueda es perfecta, pero el problema es que está almacenando incharge como cadena en la base de datos, mientras que _id: ObjectId (''theID'') es un Objeto y no solo una cadena y no puede comparar una string
('''') con un object
({}). Entonces, la mejor manera es almacenar la clave incharge como un objeto ( mongoose.Schema.ObjectId ) y no como una cadena en el esquema.