正在尝试更新mongo数据中的数组



我正在尝试更新/添加数据收集记录数组中的字段。

{ _id: 5f172788d775fa49dc0abe63,
filter_count: 5,
batch_key: '187aa0b2-f8b7-4b6a-8bd3-4d2df288e673',
report_id: '5f0ffbcdd67d70c1a3b143aa',
filters:
[ { _id: 5f17278bd775fa49dc0abe64,
name: 'USER 2 cards filter',
id: '5f0ffb96d67d70c1a3b143e7',
origin: 'USER' },
{ _id: 32334355fa49dc0abe545645,
name: 'USER 1 cards filter',
id: 'drdeseadasda3b143e34sad',
origin: 'STUDENT' } ],
__v: 0,
file_count: 1 }

以上是我所拥有的数据,现在我正试图在过滤器处添加一个字段,使用匹配的id数组但下面的代码不会发生这种情况。

const result = await execute_model.findByIdAndUpdate(
_id, 
{ "filters.id" : id{
$set:
{
status: 'SUCCESS'
info: 'SUCCESSFULLY CREATED'
}
}
}, {new: true});

_id将是5f172788d775fa49dc0abe63

id将是(将在5f17278bd775fa49dc0abe64中的滤波器阵列中(

例如,当我通过上述_idid时,预期结果低于

{ _id: 5f172788d775fa49dc0abe63,
filter_count: 5,
batch_key: '187aa0b2-f8b7-4b6a-8bd3-4d2df288e673',
report_id: '5f0ffbcdd67d70c1a3b143aa',
filters:
[ { _id: 5f17278bd775fa49dc0abe64,
name: 'USER 2 cards filter',
id: '5f0ffb96d67d70c1a3b143e7',
origin: 'USER',
status: 'SUCCESS',
info: 'SUCCESSFULLY CREATED'
},
{ _id: 32334355fa49dc0abe545645,
name: 'USER 1 cards filter',
id: 'drdeseadasda3b143e34sad',
origin: 'STUDENT' } ],
__v: 0,
file_count: 1 }

不知道为什么没有发生,这里有人能帮我吗。设置正确的查询?

编辑-型号

report_id:{type:String,trim:true},
file_name:{type:String},
filters:[{
status:{type:String}, // Trying to add this
id:{type:String},
info:{type:String}, // Also this
name:{type:String},
origin:{type:String}
}],
batch_key:{type:String,trim:true},
file_count:{type:Number},
filter_count:{type:Number},
executed_time:{type:Date}

您需要检查execute_model,看看该模型是否有字段statusinfo,否则它不会更新。实例

const execute_model = new Schema(
{
filter_count: Number,
batch_key: String,
report_id: String,
filters:[{name:String, status: 'String', info:'String', origin:'String' }]
}

所以您需要Schema中的字段,否则它将被忽略。

一种选择是找到一个

const data = await execute_model.find({ _id }).limit(1);

现在你有了全部数据。现在使用javascript数组方法更新数据,并一次性更新mongo。

const newData = await execute_model.findOneAndUpdate(
{ _id: data[0].id },
{ filter_count: 5,
batch_key: '187aa0b2-f8b7-4b6a-8bd3-4d2df288e673',
report_id: '5f0ffbcdd67d70c1a3b143aa',
filters:
[ { _id: 5f17278bd775fa49dc0abe64,
name: 'USER 2 cards filter',
id: '5f0ffb96d67d70c1a3b143e7',
origin: 'USER',
status: 'SUCCESS',
info: 'SUCCESSFULLY CREATED'
},
{ _id: 32334355fa49dc0abe545645,
name: 'USER 1 cards filter',
id: 'drdeseadasda3b143e34sad',
origin: 'STUDENT' } ],
__v: 0,
file_count: 1 }
)

最新更新