这是代码:
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);
});
这是架构:
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
是我在 usermodel.findOne
中查找的 req.params._id
。我也收到这个错误:
/Users/rodrie/Documents/node/node_modules/mongoose/lib/utils.js:434
throw err;
^
TypeError: Cannot read property '_id' of null
最佳答案
是的,查找将始终返回完整的文档。如果需要修改返回结果并提取部分结果,则需要使用聚合框架 http://docs.mongodb.org/manual/applications/aggregation/ 。但请注意,聚合框架不会返回游标,因此如果您迭代超过 16MB 的文档,它不会为您提供帮助,因为它将返回包含最多 16MB 结果的单个文档。
关于node.js - 使用 Mongoose 搜索数组内的 _id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14326005/