Javascript 需要帮助创建特殊用途的mongoose查询

Javascript 需要帮助创建特殊用途的mongoose查询,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我在一个猫鼬的查询中遇到了一些问题 有这样一个模式的图像 var Task = new Schema({ title: String, createdBy: { type: Schema.Types.ObjectId, ref: 'User' }, pool: [{ userId: {type: Schema.Types.ObjectId,

我在一个猫鼬的查询中遇到了一些问题

有这样一个模式的图像

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根据数组中的条件查找文档。它只返回找到的数组元素,效果非常好。我想要的是,它返回整个文档,如“title and createdBy and pool”,但在pool中只有一个元素与elemMatch条件匹配

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


亲切问候并感谢您的帮助

从title和createdBy中删除关键字var

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

//这是正确的
{
道具:“某物”
}
//这不是
{
var道具:“某物”
}