node.js - 使用 Mongoose 搜索数组内的 _id

标签 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);

});

这是架构:

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/

相关文章:

Node.js - 检查用户是否存在

node.js - 为什么我无法在不调用脚本的情况下运行与我的 package.json 脚本相同的命令?

node.js - 如何让我的 Node.js 应用程序集群化以仅运行一次任务?

javascript - Meteor - 从另一个模板事件处理程序访问 DOM 元素

mysql - mongodb 相当于 SELECT 字段 AS `anothername`

java - 查询二进制数据 - MongoDB

javascript - Node.js、Express.js 不向客户端发送文件

node.js - 如何安装旧版本的 express.js

node.js - 如何使用 Apple Pay 和 Google Pay 集成配置 Stripe

node.js - AWS Amplify 教程无法启动客户端应用程序