MongoDB属于 NoSql 中的基于分布式文件存储的文档型数据库,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,但是写起来并不简单。若能集算器 SPL 语言结合,处理起来就相对容易多了。         现在我们针对 MongoDB 在计算方面的问题进行讨论分析,通过集算器 SPL 语言加以改进,方便用户使用 MongoDB。现从如下情况加以说明: 1. 单表内嵌数组结构的统计............................................... 1 2. 单表内嵌文档求和......................................................... 3 3. 分段分组结构................................................................ 5 4. 同构表合并................................................................... 6 5. 关联嵌套结构情况 1...................................................... 8 6. 关联嵌套结构情况 2..................................................... 10 7. 关联嵌套结构情况 3..................................................... 11 8. 多字段分组统计........................................................... 14 9. 两表关联查询............................................................... 16 10. 多表关联查询............................................................. 17 11. 指定数组查找............................................................. 19 12. 关联表中的数组查找................................................... 20 1. 单表内嵌数组结构的统计 两个关联表,表 A 与表 B 中的内嵌文档信息关联, 且返回的信息在内嵌文档中。表 childsgroup 字段 childs 是嵌套数组结构,需要合并的信息 name 在其下。 history: 两个关联表,表 A 与表 B 中的内嵌文档信息关联, 将信息合并到内嵌文档中。表 txtPost 字段 comment 是嵌套数组结构,需要把 comment_content 合并到其下。 txtComment: 两个关联表,表 A 与表 B 中的内嵌文档信息关联, 且返回的信息在记录上。表 collection2 字段 product 是嵌套数组结构,返回的信息是 isCompleted 等字段。 测试数据: collection1:    _id: '5bc2e44a106342152cd83e97',    description:       status: 'Good',       machine: 'X'    order: 'A',    lot: '1' collection2:    _id: '5bc2e44a106342152cd83e80',    isCompleted: false,    serialNo: '1',    batchNo: '2',    product: [ // note the subdocuments here         {order: 'A', lot: '1'},         {order: 'A', lot: '2'}    _id: 5bc2e44a106342152cd83e97,    description:          status: 'Good',          machine: 'X',    order: 'A',    lot: '1' ,    isCompleted: false,    serialNo: '1',    batchNo: '2' Mongo 脚本 db.collection1.aggregate([{ $lookup :   {               from:   "collection2"             let:   {order: "\$order" , lot: "\$lot"              pipeline:   [{    $match :   {  $expr :{  \ : [ { order: "\$\$order" , lot: "\$\$lot" "\$product" "isCompleted"                },   {  $addFields :   {  "isCompleted" :   {\ $arrayElemAt "\$isCompleted"               },   {  $addFields :   { // add the required fields to the top level structure

广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员