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

文書内のそのフィールド/プロパティの制約がなく、MongoDBtransaction(これはアトミックな操作をサポートしていることのみ)をサポートしていない可能性があります。したがって、複数のスレッドにドキュメントを挿入する場合は、そうすることができます。代わりに、_idフィールドを確認して、ドキュメントの一意性を確認してください。 UserNameフィールドが_idフィールドと同じようにドキュメント内で一意でなければならないことを本当に確認したい場合は、unique indexを作成してみてください。

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

私はすでにインデックス「ユーザー名」を持っており、それはのようにユニークかどうかを作成している私は、私がチェックすることができますどのように一意のフィールドに設定されたものを覚えてすることはできません。@Çağ[email protected]ラーフル –

+0

、それは間違いなく、あなたの避難所を、重複を許可するの井戸場合その上にユニークなインデックスを作成しました。 – Rahul

+0

Okデータベースの一意のフィールドを更新するにはどうしたらいいですか?複製されたフィールドのために問題はありますか? –

関連する問題