0
在我的MongoLab數據庫中通過nodejs將新文檔保存到mongodb集合之前,我使用model.count來檢查某些字段以防止重複條目:model.count不是用於快速異步寫入的可靠測試
MyModel.count({field1: criteria1, field2: criteria2}, function (err, count) {
if (count == 0) {
// Create new document and call .save()
}
});
然而,在測試過程中我注意到的進程結束後,收集許多重複(在數量不一致的跨越測試運行),雖然不是很多,如果我沒有做.Count中()檢查。
由於MyModel.count()
語句嵌入回調中,只要某個ReadStreams發出'readable'
事件,就會反覆調用該回調語句,所以我懷疑存在由於快速寫入集合而導致的異步問題。具體而言,對MyModel.count
的兩次或多次完全相同且幾乎同時的調用返回0
的count
,並最終創建並保存(相同)文檔到集合。
聽起來可能嗎?如果是的話,我怎樣才能強制文件寫入的唯一性,而不設置超時或使用同步模式?
你已經探索使用唯一索引:
您可以創建從它的模型之前通過您的架構添加索引? –