2016-08-21 45 views
0

我有一個應用程序,要求用戶選擇一個用戶名。我想讓所有的用戶名都是獨一無二的,所以寫下類似的東西。爲什麼mongo返回零配對文件,雖然有一個?

var uniqueUsername = false; 
MongoPlayerData playerDB = new MongoPlayerData(); 
var nickCheck = Query.EQ("UserName", myUsername); 
uniqueUsername = playerDB.PlayerInfo.Find(nickCheck).Count() == 0; 
if(uniqueUsername){//Do something...} 

這是邏輯,但有些用戶可以獲得相同的用戶名。怎麼可能。任何想法 ?

回答

0

可能是因爲文檔中的該字段/屬性沒有約束,並且MongoDB也不支持transaction(它只是支持原子操作)。因此,如果您在多個線程中插入文檔,那麼可以這樣做。相反,您應該嘗試檢查_id字段以確保文檔的唯一性。如果您確實想要確保UserName字段在類似_id字段的文檔中必須是唯一的,請嘗試在其上創建unique index

db.PlayerInfo.createIndex({ "UserName": 1 }, { unique: true }) 
+0

我已經有一個指標「用戶名」,不能記住我的唯一字段設置如何檢查是它創建爲唯一與否。@拉胡爾 –

+0

@ÇağatayKaya,以及它是否允許重複的話,肯定你的避風港沒有創建一個獨特的索引。 – Rahul

+0

好吧我怎樣才能更新我的數據庫的唯一字段和是否有任何問題,因爲重複的字段發生? –

相關問題