最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

思考题:如下场景如何设计mongocollection

来源:懂视网 责编:小采 时间:2020-11-09 13:25:06
文档

思考题:如下场景如何设计mongocollection

思考题:如下场景如何设计mongocollection:Mongo 中collection相当于MySQL的表,那么当我有下面需求时,我应该如何设计我的collection及字段(key/value结构)? 场景及需求描述: 记录用户每次登录的业务标识及ip,以及登录时间 指定qid、ip需要查询该ip是否已经存在 针对上述需求,我的colle
推荐度:
导读思考题:如下场景如何设计mongocollection:Mongo 中collection相当于MySQL的表,那么当我有下面需求时,我应该如何设计我的collection及字段(key/value结构)? 场景及需求描述: 记录用户每次登录的业务标识及ip,以及登录时间 指定qid、ip需要查询该ip是否已经存在 针对上述需求,我的colle

Mongo 中collection相当于MySQL的表,那么当我有下面需求时,我应该如何设计我的collection及字段(key/value结构)? 场景及需求描述: 记录用户每次登录的业务标识及ip,以及登录时间 指定qid、ip需要查询该ip是否已经存在 针对上述需求,我的collection应

Mongo 中collection相当于MySQL的表,那么当我有下面需求时,我应该如何设计我的collection及字段(key/value结构)?

场景及需求描述:

  1. 记录用户每次登录的业务标识及ip,以及登录时间
  2. 指定qid、ip需要查询该ip是否已经存在

针对上述需求,我的collection应该如何设计?

目前有两种方案,正在纠结于哪个更好一些:

  • 方案一
  • [cc lang="javascript"]
    {‘userid’:$userid,’appid’:$appid,’ip’:$ip,’logintime’:timestamp}
    [/cc]

  • 方案二
  • [cc lang="javascript"]
    {‘userid’:$userid,
    ‘appid’:$appid,
    ‘ipArr’:{
    {‘ip’:$ip1,’logintime’:$timestamp1},
    {‘ip’:$ip2,’logintime’:$timestamp2}
    }
    }
    [/cc]

    第一种方案,清晰,多对多的关系。足够的明朗!相对查询条件应该足够的简单:findOne({userid:$userid,appid:$appid,ip:$ip});

    第二种方案,一对多的关系,查询起来指定条件比较麻烦!findOne({userid:$userid,appid:$appid,ipArr.ip:$ip});

    注明:上述说的查询语句可能不准确(刚接触Mongo)

    那么到底应该选择哪种?又如何来创建合适的索引?

    别急,现在增加一个新的需求:每个用户,同一业务,只记录最新的5条记录!

    好吧,我现在还不确定方案如何选择,以及最后一个需求具体该如何实现。明天和同事们讨论,更新本日志Mark一下!
    PS:是不是使用PHP来做条数限制会更好一些?

    最终决定采用第二种方案,实现上通过PHP的client端获取用户ip数组,使用PHP来操作数组元素的增加及删除,最后再upsert至Mongo中。

    使用php的查询条件可以如下(取决于你想取什么,实际实现上userid及appid即可限制条件了)

    [cc lang="php"]
    var_dump($monObj->remove(array(‘userid’=>’1234567′,’appid’=>’abc’,'ipArr’=>array(‘$elemMatch’=>array(‘ip’=>’127.0.0.0.1′)))));
    [/cc]

    声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    思考题:如下场景如何设计mongocollection

    思考题:如下场景如何设计mongocollection:Mongo 中collection相当于MySQL的表,那么当我有下面需求时,我应该如何设计我的collection及字段(key/value结构)? 场景及需求描述: 记录用户每次登录的业务标识及ip,以及登录时间 指定qid、ip需要查询该ip是否已经存在 针对上述需求,我的colle
    推荐度:
    标签: 如何 设计 如下
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top