Для создания схемы Mongoose с массивом и ссылками на него в том же документе, вам потребуется использовать возможность ссылаться на другие документы в MongoDB.
В Mongoose вы можете использовать тип данных ObjectId
для создания ссылок на другие документы. При определении схемы, вы можете указать поле, содержащее ссылки, используя тип данных ObjectId
и указав ref
для указания на ссылаемую модель. Также вы можете использовать тип данных Array
, чтобы создать массив из ссылок на другие документы.
Пример создания схемы Mongoose с массивом и ссылками на него в том же документе:
const mongoose = require('mongoose'); const Schema = mongoose.Schema; // Создаем схему для элементов массива const arrayItemSchema = new Schema({ // ваши поля для элемента массива }); // Создаем схему для основного документа const documentSchema = new Schema({ arrayField: [{ type: Schema.Types.ObjectId, ref: 'ArrayItem', }], // другие поля }); // Создаем модель для элемента массива const ArrayItem = mongoose.model('ArrayItem', arrayItemSchema); // Создаем модель для основного документа const Document = mongoose.model('Document', documentSchema);
В этом примере arrayField
представляет собой массив из ссылок на документы типа ArrayItem
. Каждый элемент массива является ссылкой типа ObjectId
на документ ArrayItem
. С помощью ref: 'ArrayItem'
мы указываем Mongoose, что ссылки в массиве должны указывать на модель ArrayItem
.
Теперь, когда схема и модели созданы, вы можете использовать их для создания и обновления документов в MongoDB. Записи в массиве будут содержать ссылки на документы из коллекции ArrayItem
.
Пример создания и обновления документа с массивом ссылок:
const arrayItem1 = new ArrayItem({ /* данные для элемента массива */ }); const arrayItem2 = new ArrayItem({ /* данные для элемента массива */ }); const document = new Document({ arrayField: [arrayItem1, arrayItem2], // другие поля документа }); document.save((err, savedDocument) => { if (err) { console.error(err); } else { console.log(savedDocument); } });
В этом примере arrayField
инициализируется с массивом arrayItem1
и arrayItem2
. При сохранении основного документа, Mongoose сохраняет ссылки на элементы массива вместе с другими полями.
Таким образом, вы можете успешно создать схему Mongoose с массивом и ссылками на него в том же документе, используя тип данных ObjectId
и указывая на ссылаемую модель с помощью ref
. Это поможет вам организовать связи между документами в MongoDB.