#node.js #mongodb #express #mongoose
Вопрос:
У меня есть 2 схемы, это схема родительской коллекции:
const TimesheetSchema = Schema({
managersComment: {
type: String,
},
weekNum: {
type: Number,
},
year: {
type: Number,
},
user: { type: Schema.Types.ObjectId, ref: userModel },
status: {
type: String,
enum: ["Saved", "Submitted", "Approved", "Rejected"],
},
data: [{ type: Schema.Types.ObjectId, ref: TimesheetIndividualData }]
});
Это схема дочерней коллекции
const TimesheetDataSchema = new Schema(
{
workingDate: {
type: Date,
},
dayVal: {
type: Number,
},
user: { type: Schema.Types.ObjectId, ref: userModel },
parentId: { type: String },
status: { type: String }
},
{ timestamps: true }
);
Я хочу обновить все status
поля на TimesheetDataSchema(child collection)
основе parentId
, вот parentId
в основном _id
из TimesheetSchema (parent collection)
.
Не знаю, как это сделать с помощью запроса в mongoose/mongo, поэтому я пытаюсь сделать это с помощью кода в express.
Пожалуйста, помогите.
Ответ №1:
Как насчет db.timeSheetData.updateMany({"parent_id": ObjectId(_id)})
этого ?
(Правка)
- Извлеките данные из
TimeSheetSchema
коллекции. - Повторите его и для каждого
data
получите_id
свое . db.timeSheetsData.updateMany({"parent_id": _id}, {"$set": {"status": data.status}
Комментарии:
1. ПРИВЕТ, я хочу взять значение поля статуса
TimesheetSchema
и обновить это значение вTimesheetDataSchema
базе данных при условииTimesheetSchema ._id === TimesheetDataSchema .parentId