请教下,如何进行MongoDB二维数组查询,最后返回的数据结构,形如:[[],[],[],[],...]
发布于 8 年前 作者 JarvisQJ 5422 次浏览 来自 分享

请教下,如何进行MongoDB二维数组查询,最后返回的数据结构,形如:[[],[],[],[],…]。 另外,外层数组和内层数组的数据分别存在两个集合中

12 回复

这可以当作一个map结构,利用 for (let [index, value] of result) 可以直接遍历出,简单结构的数据,进行重组读取封装等

@slclub 结构比较复杂,类似于微信的朋友圈列表,文章列表里面套聊天列表。可以说详细点吗?我觉难就难在两个,我把文章和聊天放在了两个集合。

@qujinxiong 文章和聊天,这是两个完全不同的对象吧?为什么要一次性返回?

@winglight 功能需求和微信朋友圈一样

楼主: 放在2个集合的话 第一步 先请求出文章列表 这不难,默认的分页那种取法就行了 取出的文章列表格式应该是 这样的[ {id:1,content:‘body内容’,time:‘时间等’…},…] 第二部将 他们的 ids 取出来 (mongodb 模拟mysql in查询操作) 第三部 根据ids 取出聊天的集合的 记录。 取出后,遍历的时候 按照文章 id放成 talk1 = {id:num,items:[聊天1,聊天2…]} ;talk2={…} 这样话 他们的关系就显而易见了吧。

吧相应的聊天集合 根据id 放在聊天对象的一个属性上就ok了吧

@slclub 非常感谢,但是这个方法极其繁复。数据库设计暂时还没定型,我打算实在找不到好的方法实现,就聊天列表放到文章集合中,做内嵌

我以为你都设计完事了呢;首先你看聊天的记录数,如果2000以内,或者更少 放在一个文章属性下面就ok了

{
	id:12,
	title:23,
	content:'',
	record:[comment1,comment2], //聊天记录
}

这种查询,上有一定的方便,也有一定不好; 方便在于,查询文章聊天记录,一次性能很好的出来。

不好之处在于,对聊天记录做搜索,以及一些筛选,都比较困难。

内嵌应用范围相对狭小。针对小功能尤其合适。 变动性不多的较为合适

@slclub 就是一个完全仿微信的朋友圈功能,同一个文章的聊天记录不太可能超过100条

聊天——这个是在说文章的回复吗?一般的设计是文章内嵌最新的前10条评论——这个对象是列表的,进入文章详情之后可以翻页加载评论 在列表接口里不适合一次性加载全部的文章对象及其子对象

@winglight 微信是全在文章的列表页就可以全展开,不用进详情页。我们想做这样的撒

comment前套文章里面吧

回到顶部