Как добавить значение в элемент массива в коллекции с помощью мангуста?

Я написал следующую функцию мангуста для создания нового документа в mongodb

createdata: (body) => {
    let sEntry = new SData(Object.assign({}, {
        dataId: body.DataId
       //,
       //notes.message: body.message   
    }));
    return sEntry.save();
}

Здесь схема sData включает в себя схему массива notes.

Я не могу повысить ценность message в рамках notes [] с помощью notes.message: body.message

Мое определение схемы выглядит следующим образом:

var nSchema = new Schema({
    _id: {type:ObjectId, auto: true },
    message: String
});

var sSchema = new Schema({
    _id: {type:ObjectId, auto: true },
    dataId: { type:String, unique: true },
    notes: [nSchema]
}

Я также хочу отметить, что для каждого dataId может быть несколько записей notes []. Однако SData может иметь только уникальную запись строки для каждого dataId.

Я хочу, чтобы заметки были массивом в коллекции SData. Как этого добиться, не создавая отдельную notes коллекцию? Как мне изменить createdata, чтобы учесть все заданные требования.


person meallhour    schedule 30.05.2019    source источник


Ответы (1)


Используйте references для сопоставления других коллекций и используйте populate при извлечении

Дизайн схемы

var sSchema = new Schema({
    _id: {type:ObjectId, auto: true },
    dataId: { type:String, unique: true },
    notes: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'nSchema',
    }]
}

Добавление данных

createdata: (body) => {
    let sEntry = new SData({
        dataId: body.DataId,
        notes: [nSchemaIds]
    });
    return sEntry.save();
}
person Thamaraiselvam    schedule 30.05.2019
comment
мне создать отдельный create function для добавления заметок? Кроме того, будет ли notes отдельной коллекцией? - person meallhour; 30.05.2019
comment
Notes - это отдельная коллекция, я полагаю, это то, что вам нужно. После вставки заметок вы добавляете ссылку на другую коллекцию - person Thamaraiselvam; 30.05.2019
comment
Я хочу, чтобы заметки были массивом в коллекции SData. Как этого можно добиться, не создавая отдельную notes коллекцию? - person meallhour; 30.05.2019