如何使用猫鼬在集合中为数组元素添加值?

时间:2019-05-30 05:51:12

标签: angularjs mongoose angularjs-directive mongoose-schema mongoose-populate

我编写了以下mongoose函数,以便在mongodb中创建新文档

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

sData模式在其中包括notes阵列模式。

我无法使用messagenotes []中的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以适应所有给定的要求。

1 个答案:

答案 0 :(得分:0)

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();
}