Mangosta: ¿Cómo consultar una propiedad objeto referenciada?
Estoy tratando de obtener una lista de documentos de mi base de datos basada en la propiedad de un sub-documento. Los modelos y esquemas que estoy usando son:
var elementSchema = new mongoose.Schema({
name: String,
description: String,
_story: { type: mongoose.Schema.Types.ObjectId, ref: 'Story' },
date_created: Date,
date_modified: Date,
};
var storySchema = new mongoose.Schema({
title: {type: String, default: '', trim: true},
isPrivate: {type: Boolean, default: false},
});
mongoose.model("Story", storySchema);
mongoose.model("Element", elementSchema);
Estoy tratando de obtener todos los elementos que pertenecen a una historia que no es privada, y de acuerdo con algunas publicaciones que vi por aquí (1, 2, 3) la solución sería usar _story.isPrivate con find. Actualmente estoy haciendo esto:
Element.find({'_story.isPrivate': false})
.populate('_story')
.exec(function(err, elements){
if(err){
return next(err);
}
else if(elements.length > 0){
return res.send(elements);
}
else{
return res.send(404, {message: "No elements found"});
}
});
Pero el resultado es siempre un conjunto vacío (devuelve 404). Sin ninguna condición, find devuelve todos los elementos y rellena la historia correctamente. También activé la salida de depuración para ver las consultas que se están ejecutando y obtengo esto:
Mongoose: elements.find({ '_story.isPrivate': false }) { fields: undefined, safe: undefined }
Intentando ejecutar esto en MongoDB no obtengo resultados. ¿Qué puede estar mal aquí?
Gracias