使用 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
。默认情况下,猫鼬假定_id
是ObjectId
。如果您希望能够获取手动创建的 ID,则需要在架构中指定。
如果_id
是Number
,那么您必须在架构中明确指定。
schema= new Schema(
_id: Number
),
var Thread = mongoose.model('threads', schema);
【讨论】:
以上是关于使用 Mongoose 在投影中包含 Mongodb“_id”字段的主要内容,如果未能解决你的问题,请参考以下文章
node中mongodb数据库的使用(下载使用mongoose包)及mongodb数据库的常用命令