关于MongoDB数据库的疑问-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于MongoDB数据库的疑问

2016-02-14 11:27:56 2100 1

问题一:是否collection越少越好,尽量把关系数据库中分表表示的关系嵌套进文档里?
问题二:如果这样的话,一句SQL能搞定的复杂查询,mongodb也许要查询多次。mongodb的查询速度是否还比sql数据库快?
问题三:那mongodb的优势体现在哪?超大规模数据的mapreduce?方便拓展?
我来举个栗子吧:
假设mysql中是这样的(意思意思):
screenshot
那么MongoDB中就可能是这个样子:
•只有一个authors collection
screenshot
问题来了,如果我要单独查出所有作者的文章,并按浏览量来排序,要如何做?
•于是有了第二种设计方法,这也是nosql = not only sql的体现。有authors和articles两个collection
screenshot
现在的问题是,如果我要把文章和作者的名字一起返回要怎么办?

  1. 是不是要查两次,连两次?如果连一次的话,有一些paas是不支持的(比如说bae,亲测不支持)。这样是否有失优雅?
  2. 如果在article里存一份author.name的话,当某个作者改了名字,文章显示的作者名将无法更新,如果硬要一起更新,开销是否太大?
  3. DBRef何时用比较合适?在这里,要怎么用?

在这里栗子中,总结一下我们需要的东西:
•所有作者旗下的文章可以全部聚合返回,并按某种方式排序
•文章可以和与之匹配的作者名一起返回
•作者可以编辑自己的资料
•文章和作者都可以单独插入
可能比较啰嗦,大家谅解。
要是有人能总结一下mongodb数据库设计的一些原则就更好了

取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:42:31

    mongodb不是rdbms。你尽可以随意发起任何select类型查询。比如

    for ($i=0,$j<100000000;$i<$j;$i++)
        $author = $mongo->getCollection('db','table')->findOne(array('author_id'=>id),array('author_name'=>1));
        echo $author['author_name'];

    mysql,这样你就是疯了。mongodb,这样,很好。
    你要根本的观念上认为:mongodb是绝对有别于MySQL的。
    当然,不可否认的是,查询越少越好-

    0 0
相关问答

1

回答

mongodb数据复制的过程是什么?

2022-03-15 09:08:32 413浏览量 回答数 1

1

回答

mongodb是数据库吗

2019-12-10 14:19:47 433浏览量 回答数 1

1

回答

mongodb 如何创建数据库

2019-12-10 14:35:55 456浏览量 回答数 1

1

回答

认识nosql数据库MongoDB

2019-11-20 16:03:26 760浏览量 回答数 1

1

回答

云数据库mongodb实例购买后,状态一直是创建中

2018-09-02 20:52:22 1456浏览量 回答数 1

0

回答

云数据库MongoDB版上如何创建账号

2017-10-30 17:44:31 1177浏览量 回答数 0

2

回答

关于原始数据的疑问

2016-09-21 21:49:36 4721浏览量 回答数 2

3

回答

MongoDB云数据库

2016-04-15 16:45:17 6057浏览量 回答数 3

1

回答

mongodb数据库备份恢复策略

2016-02-21 18:25:00 2248浏览量 回答数 1

1

回答

MongoDB 数据目录乱码疑问

2016-02-18 16:41:21 1581浏览量 回答数 1
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载