为什么他们在Mongoose Population中使用ObjectId和Number?

在这个例子中,他们使用ObjectId创buildpersonSchema来引用Story ,这个我明白。 但是在storySchema为什么他们不这样做来引用这个人呢?

或者反过来:为什么使用ObjectId而不是Number in Person?

 var mongoose = require('mongoose') , Schema = mongoose.Schema var personSchema = Schema({ _id : Number, name : String, age : Number, stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }] }); var storySchema = Schema({ _creator : { type: Number, ref: 'Person' }, title : String, fans : [{ type: Number, ref: 'Person' }] }); var Story = mongoose.model('Story', storySchema); var Person = mongoose.model('Person', personSchema); 

引用的types必须与被引用模式的_id属性相同。

personSchema的情况下,这是一个Number

另一方面, storySchema具有由mongoose自动分配的_id字段 – 它不在模式构造函数的参数中指定。

如果没有传递给Schema构造函数,Mongoose默认为每个模式分配一个_id字段。 被攻击的types是与MongoDB默认行为一致的ObjectId