【发布时间】:2021-06-30 02:33:02
【问题描述】:
以前我没有在我的 Schema 中声明 _id,所以每次新提交自然会生成 MongoDB ObjectId,因为它是 _id。但是,要求已经改变,现在_id 被声明为String,如下所示。
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var MySchema = new Schema({
_id: {
type: String,
},
schoolID: {
type: mongoose.Schema.Types.ObjectId, ref: 'School'
},
points: {
type: Number
},
});
MySchema.index({ schoolID : 1})
module.exports = mongoose.model('Submission', MySchema);
但是,现在我根本找不到以前使用 _id 插入的文档。我试过了
var submissionId = "60654319a8062f684ac8fde4"
Submission.findOne({ _id: mongoose.mongo.ObjectId(submissionId ) })
Submission.findOne({ _id: mongoose.Types.ObjectId(submissionId ) })
Submission.findOne({ _id: mongoose.ObjectId(submissionId ) })
但它总是会返回null。所以当我使用var mongoose = require('mongoose').set('debug', true);查看时,会显示在下方;我上面的所有查询仍然可以使用String,而不是ObjectId
Mongoose: submission.findOne({ _id: '60654319a8062f684ac8fde4' }, { projection: {} })
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query mongoose-schema