Het voorbeeld van de mangoestdocumenten waarnaar u verwijst, gebruikt Number voor de personSchema._id veld, en ObjectId voor de anderen.
Ik neem aan dat ze dit in het voorbeeld alleen doen om aan te tonen dat het mogelijk is om beide te gebruiken. Als u _id niet opgeeft in het schema, ObjectId zal de standaard zijn.
Hier hebben al uw records een _id veld dat een ObjectId . is , maar je behandelt ze als getallen. Verder kunnen velden als personID en taskID bestaan niet, tenzij je het gedeelte hebt weggelaten waar je ze definieert.
Als je cijfers wilt gebruiken voor al je _id velden, moet u dat in de schema's definiëren.
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
Om vervolgens een nieuwsbericht met een bepaalde ID te maken en het toe te wijzen aan een maker:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
Het ding om hier op te merken is echter dat wanneer u iets anders gebruikt dan ObjectId als de _id veld, neemt u zelf de verantwoordelijkheid op zich om deze waarden te beheren. ObjectIds worden automatisch gegenereerd en vereisen geen extra beheer.
Bewerken:ik heb ook gemerkt dat je refs aan beide kanten van je associaties opslaat. Dit is volkomen geldig en misschien wil je het soms doen, maar houd er rekening mee dat je zelf voor het opslaan van de referenties moet zorgen in de pre haak.