O exemplo dos documentos do mangusto que você mencionou usa
Number para o personSchema._id campo e ObjectId para os outros. Presumo que eles façam isso no exemplo apenas para demonstrar que é possível usar ambos. Se você não especificar
_id no esquema, ObjectId será o padrão. Aqui, todos os seus registros têm um
_id campo que é um ObjectId , mas você os está tratando como números. Além disso, campos como personID e taskID não existem, a menos que você tenha deixado de fora a parte onde você os define. Se você quiser usar números para todos os seus
_id campos, você teria que definir isso nos esquemas. var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
Em seguida, para criar um item de notícias com um ID específico e atribuí-lo a um criador:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
No entanto, o que deve ser observado aqui é que, quando você usa algo diferente de
ObjectId como o _id campo, você está assumindo a responsabilidade de gerenciar esses valores por conta própria. ObjectIds são gerados automaticamente e não requerem gerenciamento extra. Edit:também notei que você está armazenando refs em ambos os lados de suas associações. Isso é totalmente válido e você pode querer fazer isso algumas vezes, mas note que você teria que cuidar de armazenar as referências você mesmo no
pre gancho.