我有一个名为List.js的模型,如下所示:
module.exports = function(mongoose, models) {
var collection = 'List',
Schema = mongoose.Schema;
var schema = new Schema({
promotor: String,
nombre_promotor: String,
cod_evento: {type: Schema.Types.ObjectId, ref: 'Evento'},
lista: [{
nombre: String,
cod_usuario_lider: {
type: Schema.Types.ObjectId,
ref: 'Usuario'
},
usuarios_agregados: [{
cod_usuario: {
type: Schema.Types.ObjectId,
ref: 'Usuario'
},
nombre: String,
fbid: String,
tipo_usuario: Number
}]
}]
});
this.model = mongoose.model(collection, schema);
return this;
}
我试图在“lista”字段中找到与cod_usuario_lider匹配的文档,以及在“lista”中的“usuarios_agregados”中找到与“cod_usuario”匹配的文档。查询的第一部分返回匹配的文档,但第二部分不返回任何内容。任何人都知道进行该查询的正确方法吗?
var codigo_buscar=req.body.codigo_buscar;
models.List.find({
$or: [{
lista: {
$elemMatch: {
cod_usuario_lider: codigo_buscar
}
}
}, {
usuarios_agregados: {
$elemMatch: {
cod_usuario: codigo_buscar
}
}
}]
})
.exec(function(err, data) {
console.log(data);
});
查询的第一部分返回匹配的文档,但第二部分不返回任何内容。任何人都知道进行该查询的正确方法吗?
答案 0 :(得分:0)
从您的文档中,看起来usuarios_agregados是lista的一个属性。在这种情况下,您必须查询如下:
var codigo_buscar=req.body.codigo_buscar;
models.List.find({
$or: [{
lista: {
$elemMatch: {
cod_usuario_lider: codigo_buscar
}
}
}, {
lista.usuarios_agregados: {
$elemMatch: {
cod_usuario: codigo_buscar
}
}
}]
})
.exec(function(err, data) {
console.log(data);
});