分享

请教mongdb嵌套文档的查询效率问题

a28049336 发表于 2013-10-17 21:37:52 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 5147
举个栗子:
  存储一条论坛记录的时候,可以把评论作为嵌入文档存在帖子里面,但是如果要删除一条评论的时候,是不是要遍历所有的评论才能找到呢?
              
               
               

已有(4)人评论

跳转到指定楼层
ACMAIN_CHM 发表于 2013-10-17 21:38:48

            如果这样设计的话,那只能遍历文档。
一般论坛的设置是把评论或回复单独另放一条记录的。
        
回复

使用道具 举报

a28049336 发表于 2013-10-17 21:39:45

            引用 1 楼 ACMAIN_CHM 的回复:如果这样设计的话,那只能遍历文档。
一般论坛的设置是把评论或回复单独另放一条记录的。

但是我说的那个不是mongodb标榜的和关系数据库的优势么?
        
回复

使用道具 举报

fengyarongaa 发表于 2013-10-17 21:40:25

            引用 2 楼 a28049336 的回复:引用 1 楼 ACMAIN_CHM 的回复:如果这样设计的话,那只能遍历文档。
一般论坛的设置是把评论或回复单独另放一条记录的。
但是我说的那个不是mongodb标榜的和关系数据库的优势么?

我觉得你的设计可以用不同的解决方案。
1、使用MongoDB数据集合的概念。
2、将评论采用追加数据的方式解决。
        
回复

使用道具 举报

lu467344991 发表于 2013-10-17 21:41:08

            LZ好,这个我也是遍历的,没找到其他法子,期待大神解答。
LZ可以改变一个数据格式
举个例子,动态下面有评论字段,结构 {'content':'', 'comment': [{'serialNumber':'1','status':true},{'serialNumber':'2','status':true}]}
字段说明:content动态的内容,comment具体的评论值类型数组,serialNumber评论流水号,多加个status表示状态,其他字段可以另外加。
如果想删除serialNumber=1的评论,可以使用update方法实现
db.collectionName.update({'comment.serialNumber':  '1'}, {'$set': {'comment.status': false}});
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条