使用Mongoose搜索数组内的_id

时间:2013-01-14 20:21:26

标签: node.js mongodb express mongoose

这是代码:

usermodel.findOne({"imagen._id": req.params.id }, {imagen: 1}, function (err, imagen){

    if(err) throw err;
    console.log(req.params.id + '\n');
    console.log(imagen);

    res.send(imagen);

});

这就是Schema:

var userschema = new mongoose.Schema({

  user: String,
  imagen: [{ 

              title: String,
              name: String,
              author: String,


           }]

});

我正在尝试获得这样的输出:

{  title: 'DQ monstes',
   name: 'fooname.png',
   author: 'fooauthor',
}

但我明白了:

{ _id: 50f41ccff405ef73c4000006,
imagen: 
 [ { title: 'Pokemon',
   name: 'random.png',
   author: 'fooauthor',
},
  { title: 'DQ monstes',
    name: 'fooname.png',
    author: 'fooauthor',
}

开头的_id是我在req.params._id寻找的usermodel.findOne。我也收到了这个错误:

/Users/rodrie/Documents/node/node_modules/mongoose/lib/utils.js:434
     throw err;
           ^
TypeError: Cannot read property '_id' of null

1 个答案:

答案 0 :(得分:0)

是的,查找将始终返回完整的文档。如果您需要修改返回的结果提取部分,则需要使用聚合框架http://docs.mongodb.org/manual/applications/aggregation/。但是请注意,聚合框架不会返回游标,因此如果您正在迭代超过16MB的文档,它将无法帮助您,因为它将返回一个最多16MB结果的单个文档。