【问题标题】:Include Mongodb "_id" field in projection with Mongoose使用 Mongoose 在投影中包含 Mongodb“_id”字段
【发布时间】: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 .... } );问候

标签: node.js mongodb express mongoose


【解决方案1】:

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

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

schema= new Schema({
            _id: Number
        }),

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    相关资源
    最近更新 更多