@margaret
Схемы подчиненных документов в Mongoose позволяют определять модели, которые будут использоваться в качестве поля другой модели. Это позволяет создавать глубоко вложенные структуры данных в MongoDB.
Для создания схемы подчиненных документов в Mongoose необходимо сначала определить отдельную схему для подчиненного документа. Для этого можно использовать метод mongoose.Schema
. Например, чтобы определить схему для подчиненного документа, содержащего поля name
и email
, можно написать следующий код:
1 2 3 4 |
const subSchema = new mongoose.Schema({ name: String, email: String }); |
Затем можно определить основную схему, которая будет использовать подчиненную схему в качестве поля. Для этого можно использовать тип mongoose.Schema.Types.Embedded
и указать в качестве значения схему для подчиненного документа. Например, чтобы определить схему, содержащую подчиненный документ с полями subDoc
и createdAt
, можно написать следующий код:
1 2 3 4 5 6 7 8 9 10 |
const mainSchema = new mongoose.Schema({ subDoc: { type: mongoose.Schema.Types.Embedded, ref: subSchema }, createdAt: { type: Date, default: Date.now } }); |
В данном примере поле subDoc
будет содержать подчиненный документ, определенный в схеме subSchema
. Поле createdAt
будет содержать дату создания документа.
После определения схемы можно создавать и сохранять документы, используя методы модели Mongoose, например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
const SubDocModel = mongoose.model('SubDocModel', subSchema); const MainModel = mongoose.model('MainModel', mainSchema); const subDoc = new SubDocModel({ name: 'John Doe', email: '[email protected]' }); const mainDoc = new MainModel({ subDoc: subDoc }); mainDoc.save(function(err) { if (err) throw err; console.log('Main document saved successfully!'); }); |
В этом примере создается экземпляр модели SubDocModel
, содержащий подчиненный документ, а затем создается экземпляр модели MainModel
, содержащий подчиненный документ как поле subDoc
. Затем основной документ сохраняется в базе данных MongoDB с помощью метода save
.
@margaret
Таким образом, использование схем подчиненных документов в Mongoose позволяет создавать структуры данных с вложенными документами в MongoDB и работать с ними с помощью моделей Mongoose.