0
在nodejs
+ mongoose
,我有這樣的架構和功能:併發寫入蒙戈/貓鼬創建重複
var storeSchema = new Schema({
sensor_id: {type: String, required: true},
dateString: {type: String, required:true},
created: {type: Date},
values: {}
});
storeSchema.index({sensor_id:1,dateString:1},{unique:true});
// sensorId and stringDate come from outside
//
function(sensorId,stringDate)
{
Store.findOneAndUpdate(
{
sensor_id: sensorId,
dateString:stringDate,
},
updated,
{
new:false
},
function(err, sensorResult){
if(err){
console.log(err);
return;
}
else
{
if (sensorResult === null)
{
var newRecord = {
sensor_id:sensorId,
dateString:stringDate,
created:new Date(),
};
Store.create(newRecord,function(err){
});
}
}
}
);
}
我的腳本只檢查記錄是否存在:如果不是,它會創建一個新的記錄,否則更新舊的。 要保存的數據來自另一個腳本(基本上是一個服務器)。
數據包是一個JSON對象,它包含sensorId
和stringDate
。 但是,如果我向腳本發送兩個相同的「數據包」,它將存儲兩個重複的記錄,即具有相同的dateString和sensorId。