【问题标题】:Why is mongo return zero matching document although there is one?为什么mongo返回零匹配文档虽然有一个?
【发布时间】:2016-08-21 20:49:55
【问题描述】:

我有一个要求用户选择用户名的应用。我想让所有用户名都独一无二,所以写这样的东西。

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

这是逻辑,但某些用户可以获得相同的用户名。怎么可能。有什么想法吗?

【问题讨论】:

    标签: c# mongodb linq find unique


    【解决方案1】:

    可能是因为文档中的该字段/属性没有约束,而且MongoDB 不支持transaction(它只是支持原子操作)。因此,如果您在多个线程上插入文档,则可以这样做。相反,您应该尝试检查 _id 字段以确保文档的唯一性。如果您真的想确保 UserName 字段在文档中必须是唯一的,_id 字段同样如此,请尝试在其上创建 unique index

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

    【讨论】:

    • 我已经有一个索引“用户名”并且不记得我为唯一字段设置的内容如何检查它是否创建为唯一字段。@Rahul
    • @ÇağatayKaya,如果它允许重复,那么您肯定没有在其上创建唯一索引。
    • 好的,我如何更新我的数据库的唯一字段,是否因为重复字段而出现任何问题?
    • @ÇağatayKaya,取决于您的应用需求。如果您希望该字段是唯一的,那就去吧,否则可能没问题。关于另一个问题,请为此发布另一个问题。
    • 好的,我知道了。如果 db 有重复项,则无法创建唯一索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    相关资源
    最近更新 更多