请教下,如何进行MongoDB二维数组查询,最后返回的数据结构,形如:[[],[],[],[],…]。 另外,外层数组和内层数组的数据分别存在两个集合中
这可以当作一个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前套文章里面吧