我正在尝试更新/添加数据收集记录数组中的字段。
{ _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
中的滤波器阵列中(
例如,当我通过上述_id
和id
时,预期结果低于
{ _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
,看看该模型是否有字段status
和info
,否则它不会更新。实例
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 }
)