使用 Mongoose 在投影中包含 Mongodb“_id”字段

Posted

技术标签:

【中文标题】使用 Mongoose 在投影中包含 Mongodb“_id”字段【英文标题】:Include Mongodb "_id" field in projection with Mongoose 【发布时间】:2014-05-27 13:18:33 【问题描述】:

我正在使用 Node.js 和 Mongoose 检索 Mongo 文档,如下所示:

var app = express();
var Thread = mongoose.model('threads', schema);
app.get('/api/closed/all', function(req, res) 
    Thread.find( IsCLOSED: true , function(err, post)
        res.send(post);
    );
);

但它没有返回“_id”字段,我错过了什么?

在文档中它说默认情况下应该包含 _id

谢谢

** 编辑 **

解决方案:我必须在 Schema 中指定它:

var schema = new mongoose.Schema( _id : String ........ );

【问题讨论】:

你的代码是正确的,你怎么知道_id丢失了。你会迭代响应对象并显示有问题的输出吗? 在端点中查看答案时,_id 不存在,所有其他字段都是 你是如何创建 _id 的,它手动创建的 ids 还是 mongo 为你创建了 Object ID 的? 它是手动创建的 我找到了原因,我必须在 Mongoose Schema 中指定它:var schema = new mongoose.Schema( _id : String .... );问候 【参考方案1】:

如果手动创建,_id 不是,Object。默认情况下,猫鼬假定_idObjectId。如果您希望能够获取手动创建的 ID,则需要在架构中指定。

如果_idNumber,那么您必须在架构中明确指定。

schema= new Schema(
            _id: Number
        ),

var Thread = mongoose.model('threads', schema);

【讨论】:

以上是关于使用 Mongoose 在投影中包含 Mongodb“_id”字段的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 查找数组中包含字符串的所有文档

如何有条件地在 Mongoose 的查询中包含/排除字段?

node中mongodb数据库的使用(下载使用mongoose包)及mongodb数据库的常用命令

OpenLayers中的球面墨卡托投影

MONGOOSE 使用字符串查找文档 (LIKE %SQL)

Mongoose 不会从 JSON 数组创建子文档