https://tvax3.sinaimg.cn/crop.0.0.1242.1242.180/8ab82391ly8fj323zknhnj20yi0yit9k.jpg

I am cofl

MongoDB如何查询出所有二维数组中的内容并返回相应的数组

场景简介 一个在学校使用的公众号,公众号需要家长在微信中为自己的孩子进行注册然后进行一些后续的操作。这里我们要考虑到多位家长绑定同一个孩子和一个家长绑定多个孩子的场景。 首先一步要做的就是要把家长的登录信息和填写的孩子信息进行存储,这里我们使用的是MongoDB,肯定优先会把所有信息存储到一个文档中。文档大致结构如下 整体信息是一个文档,可以看做一个文档为一个家庭 父母可能为多个,所以使用内嵌数组存储 孩子同样可能为多个,同样使用内嵌数组来存储 MongoDB文档结构大概如下 { _id: ObjectId("5f06ae15cf20bc8fea5cf982"), patients: [ { p_id: "nxM81594361333", name: "cofl", sex: "男", tel: "12222222222", birth_year: "2000", school_id: "B0FFGAPLTR", school_name: "xxxxxxx", grade_id: "g01", grade_name: "一年级", class_id: "c01", class_name: "一班", add_time: NumberLong(1594361333) }, { p_id: "nxM81594363774", name: "cofl111", sex: "男", tel: "12222222333", birth_year: "2000", school_id: "B0FFGAPLTR", school_name: "xxxxxxxx", grade_id: "g01", grade_name: "一年级", class_id: "c01", class_name: "一班", add_time: NumberLong(1594363774) }, { p_id: "nxM81594365730", name: "cofl222", sex: "男", tel: "19999222233", birth_year: "2000", school_id: "xxxxxxx", school_name: "xxxxxxx", grade_id: "g01", grade_name: "一年级", class_id: "c01", class_name: "一班", add_time: NumberLong(1594365730) } ], parents: [ { openid: "xxxxxxxxxxxx", nickname: "cofl", sex: 1, city: "朝阳", province: "北京", country: "中国" } ] } 具体遇到的问题 父母及孩子都是内嵌数组,所以需要对MongoDB内嵌array的增删改查 在某些场景需要将所有的学生(孩子)信息进行列表展示,所以我们需要将学生信息查询出来 首先我们排除直接查询所有文档然后在进行遍历组合学生list的方案 再次我们希望能通过sql直接查询到所有学生并可以进行排序,以及支持页面分页展示。 请开始你的表演 项目使用golang进行的开发,所以引用的部分代码均为golang代码

为什么开了这个博客?

 对于我个人来说,最能学到东西的就是自己亲自解决的一个问题(很可能是bug),或者是给他人解决一个疑问,亦或者是为了给他人讲解一些问题。 就像上学时做数学题一样,自己做出来了印象深刻,去讲台把这道题讲解给同学们并且解答同学提出的疑惑后印象更为深刻,理解更为透彻。 这也许就是最适合我的学习方式。因此搭建了这个博客。 抽象生活工作中遇到的问题,亲自解决并记录再此 希望在能力范围内帮助一些人解决问题,并让自己学到更多 占位先 想到慢慢补充 没准还能顺便赚个零花钱(这是个美好的愿望)