收藏
回答

JSON 数据库集合collection之间的关系

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 fdsfsdaffasdfa 2

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo


云开发提供了一个 JSON 数据库,两个集合 collection之间的关系如何处理?

例如:

集合 collection

books 集合存放了图书记录

[

    {

        _id: b001

        auther_id: a001

    }

]


authers 集合

[

    {

        _id: a001,

        name: Tom

    }

]


怎么样查

db.collection('books').where({

 auther_id: 'a001'

}).get({

 success: function(res) {    // res.data 是包含以上定义的两条记录的数组    console.log(res.data)  }})

如何得到结果让book里直接包含auther

[

    {

        _id: b001

        auther: {

            _id: a001,

            name: Tom

        }

    }

]


回答关注问题邀请回答
收藏

1 个回答

  • \
    \
    2019-06-09

    为什么设计表的时候要单独分开图书表和作者表,做筛选的时候还要联表查询,仅仅靠查询语句还很麻烦,执行效率也不高。

    2019-06-09
    有用
    回复 7
    • Chenyi
      Chenyi
      2019-06-09

      一个作者写多本书,每本书的表里都放同一个作者的信息,这样信息重复。

      如果要修改该作者的信息,每本书里的相同信息都要更新一遍,也是重复啊。

      2019-06-09
      回复
    • \
      \
      2019-06-09回复Chenyi

      其实现在就是小程序端的数组操作消耗的资源,和数据表的信息冗余之间作取舍

      2019-06-09
      回复
    • Chenyi
      Chenyi
      2019-06-09

      冗余的信息如果要更新,消耗的资源也非常多啊

      2019-06-09
      回复
    • \
      \
      2019-06-09回复Chenyi

      获得作者信息集合author_row

      db.collection('books').where({  auther_id: author_row._id }).get({  success: function(res) {

          这里res.data集合是查询到的结果

          为了不混淆,图书作者集合定义为book_resuslt(数组类型)

          book_result[_id]=res.data._id;

          book_result[_author]=author_row;    //book_result 是包含以上定义的两条记录的数组    console.log(book_result)  }

      })


      大致思路就是这样,不知道能不能给你什么帮助

      2019-06-09
      回复
    • Chenyi
      Chenyi
      2019-06-09

      谢谢!

      2019-06-09
      回复
    查看更多(2)
登录 后发表内容