我遇到了某些mongoose查询的问题。
具有类似模式的成像
var Task = new Schema({
title: String,
createdBy: {
type: Schema.Types.ObjectId, ref: 'User'
},
pool: [{
userId: {type: Schema.Types.ObjectId, ref: 'User'},
accepted: {
type: Boolean,
default: false
}
}]
});
Task.find({pool: {$elemMatch:{userId: userId, accepted: false}}}, {'pool.$':1}).populate('createdBy', '_id name surname').populate('pool.userId', '_id name surname').exec(function(err, tasks){
所以现在问题是我真的只是得到了我想要的数组条目,但我没有像title和createdBy那样得到文档的其余部分。
有人建议如何解决这个问题吗?
亲切的问候托马斯
哦对不起,我的架构中没有关键字var。我匆忙创造了我的问题。所以又来了。我正在使用elemMatch按照Array中的条件查找文档。它只能返回找到的数组元素。我想要的是它返回整个文档,如'title和createdBy and pool',但在池中只是与elemMatch标准匹配的元素。
我希望我的问题现在更容易理解。
亲切的问候并感谢您的帮助
答案 0 :(得分:0)
从title和createdBy中删除关键字var。
原因:Schema将JavaScript对象作为参数,在定义javaScript对象时,不应在属性中使用var。
//This is correct
{
prop: "Something"
}
//This is not
{
var prop: "Something"
}