我有两个模式,这是父集合模式:
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 }
);
我想基于parentId
更新TimesheetDataSchema(child collection)
中所有的status
字段,这里的parentId
基本上是TimesheetSchema (parent collection)
的_id
。
不确定如何通过mongoose/mongo查询做到这一点,所以我试图通过express中的代码做到这一点。
请帮助。
db.timeSheetData.updateMany({"parent_id": ObjectId(_id)})
呢?
- 从
TimeSheetSchema
collection中获取数据 - 遍历它并为每个
data
获得_id
。 db.timeSheetsData.updateMany({"parent_id": _id}, {"$set": {"status": data.status}