我試圖將一個對象數組推入文檔。我使用$ addToSet嘗試並不插入重複的數據。我想檢查applied.studentId。但是,如果我傳遞兩次相同的請求,那麼數據將被插入。是否有任何$ addToSet和$每個我必須使用的檢查?
我的模式是如下
jobId: { type: Number},
hiringCompanyId: String,
applied: [{
studentId: String,
firstName:String,
lastName:String,
gender:String,
identityType:String,
identityValue:String,
email:String,
phone:String,
}],
我的節點代碼如下。
public ApplyForJob(data: JobDto): Promise<{ status: string }> {
let students = data.applied;
let findQuery = {hiringCompanyId: data.hiringCompanyId, jobId: data.companyJobId};
let appliedQuery = {};
if (!isNullOrUndefined(data.applied.length)) {
appliedQuery = {
"$addToSet": {
"applied": {
"$each": data.applied
}
}
};
}
return new Promise((resolve, reject) => {
Jobs.findOneAndUpdate(findQuery, appliedQuery).exec((err, info) => {
if (err) {
reject(new UpdateError('Jobs - Update()', err, Jobs.collection.collectionName));
} else {
console.log(info);
resolve({status: "Success"});
}
})
});
}
我甚至設置_id:在架構 –
OK,等禁用日期字段,$ addToSet作品假。有沒有任何選項可以在執行addToSet檢查時禁用字段? –
貓鼬4.11.11和mongo 3.4.2 –