开发者社区> 问答> 正文

下面的业务场景在mongoDB中如何定义主键?

我有如下的用户管理业务场景
1、数据结构有:用户ID(非空,自增数字)、登录名(可空,但非空时不能重复的字符)、用户名(可空,但非空时不能重复的字符)
2、用户注册时必须真登录名,但使用第三方帐号(如QQ、微信等)登录则不需要(所以登录名可空),登录名一旦录入则不能修改
3、用户名可随时修改,但不能重复
4、其他业务里有大量使用用户ID查询用户信息的场景
如上情况,我要使用mongoDB存储用户信息,但是这张表的key不知如何定义(考虑到mongo使用的分片策略),如果用ID当key,但是大量的通过用户名的查询和用户登录的动作效率就不高了,如果用三者联合做key,但是用户名又是可变的。
希望大师指点。

展开
收起
落地花开啦 2016-02-26 14:40:41 2395 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    你这里的可为空只是假的可为空,直接默认设置一个值就好了。
    比如登录名,如果第三方登录的有什么影响,,默认系统给她一个登录名。
    用户名一样啊,现在很多app都是登陆进去了随机给个名字你,可以改就好了。

    2019-07-17 18:48:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载