我有一个应用程序,要求用户提取用户名。我想让所有用户名都是唯一的,所以写下类似的内容。
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 :(得分:0)
可能因为文档中的字段/属性没有约束,MongoDB
也不支持transaction
(它只支持原子操作)。因此,如果您在多个线程上插入文档,则可以这样做。相反,您应该尝试检查_id
字段以确保文档的唯一性。如果您确实要确保UserName
字段在_id
字段的文件中必须是唯一的,请尝试在其上创建unique index
。
db.PlayerInfo.createIndex( { "UserName": 1 }, { unique: true } )