2016-08-21 44 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

好吧我怎样才能更新我的数据库的唯一字段和是否有任何问题,因为重复的字段发生? –

相关问题