アイテムのコレクションとカテゴリのコレクションがあり、すべてのクエリがアイテム コレクションに対して実行され、カテゴリには常に非常に少数のドキュメントが含まれることを考慮して、それらを関連付けたいと考えています。myItem.category ='CATEGORY_CODE'. これにより、どのクライアントも、ローカルに保存でき、ネイティブの mongodb ID とは対照的に予測可能なカテゴリ コードのみを操作できます。
モデルは次のとおりです。
//Item.js
var ItemSchema = new Schema({
name: { type: String, default: 'default_name', trim: true },
category: { type: Schema.Types.ObjectId, ref: 'Category' },
});
mongoose.model('Item', UserSchema)
//Category.js
// Note: 'uncat' is the category code for 'uncategorized'
var CategorySchema = new Schema({
_id: { type: String, default: 'uncat', lowercase: true, trim: true },
translation: [ { lang_code: String, text: String}]
});
mongoose.model('Category', CategorySchema);
質問は次のとおりです。
CategorySchema の「_id」フィールドを無効にして、別のフィールド (つまり「コード」) を使用し、Item.Category から CategorySchema.code を参照することは可能ですか (推奨されますか)? このシナリオに一致する可能性のある別の戦略を知っていますか?
カテゴリ スキーマは次のようになります。
var CategorySchema = new Schema({
code: { type: String, default: 'uncat', lowercase: true, trim: true },
translation: [ { lang_code: String, text: String}]
}
_id: false
);