需要帮助创建用于特殊目的的mongoose查询

时间:2015-10-03 16:22:29

标签: javascript node.js express mongoose

我遇到了某些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标准匹配的元素。

我希望我的问题现在更容易理解。

亲切的问候并感谢您的帮助

1 个答案:

答案 0 :(得分:0)

从title和createdBy中删除关键字var。

原因:Schema将JavaScript对象作为参数,在定义javaScript对象时,不应在属性中使用var。

//This is correct
{
  prop: "Something"
}


//This is not
{
 var prop: "Something" 
}