• MongoDB学习笔记(四)


    第四章 Mongodb聚合函数


    插入 测试数据

    复制代码
    for(var j=1;j<3;j++){    
    for(var i=1;i<3;i++){    
      var person={
        Name:"jack"+i,
        Age:i,
        Address:["henan","wuhan"],
        Course:[
        {Name:"shuxue",Score:i},
        {Name:"wuli",Score:i}
        ]
      }
      db.DemoTest.Person.insert(person)     
    }
    }
    复制代码

    Count

    db.DemoTest.Person.count({Name:"jack1"})

    返回数量

     distinct

    db.DemoTest.Person.distinct("Name")

    返回不重复的Name值。

     group

    例子:按照Name分组,条件是Age大于46

    复制代码
    db.DemoTest.Person.group({
        "key":{"Name":true}, -----分组的keky
        "initial":{"Person":[]},-------每组分享的一个”初始化函数“
        "$reduce":function(cur,prev){   ------这个函数的第一个参数是当前的文档对象,第二个参数是上一次function操作的累计对象,第一次为initial中的{”person“:[]}。有多少个文档, $reduce就会调用多少次

    prev.Person.push(cur);
    },
        "finalize":function(prev){   ---返回每组的数量     
          prev.count=prev.Person.length;  
        },
        "condition":{"Age":{"$lt":46}}   -----过滤条件
        })
    复制代码

    返回结果如下:

    复制代码
    /* 0 */
    {
        "0" : {
            "Name" : "jack1",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9d6"),
                    "Name" : "jack1",
                    "Age" : 1,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 1
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 1
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba07"),
                    "Name" : "jack1",
                    "Age" : 1,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 1
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 1
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "1" : {
            "Name" : "jack2",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9d7"),
                    "Name" : "jack2",
                    "Age" : 2,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 2
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 2
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba08"),
                    "Name" : "jack2",
                    "Age" : 2,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 2
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 2
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "2" : {
            "Name" : "jack3",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9d8"),
                    "Name" : "jack3",
                    "Age" : 3,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 3
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 3
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba09"),
                    "Name" : "jack3",
                    "Age" : 3,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 3
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 3
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "3" : {
            "Name" : "jack4",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9d9"),
                    "Name" : "jack4",
                    "Age" : 4,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 4
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 4
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba0a"),
                    "Name" : "jack4",
                    "Age" : 4,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 4
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 4
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "4" : {
            "Name" : "jack5",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9da"),
                    "Name" : "jack5",
                    "Age" : 5,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 5
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 5
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba0b"),
                    "Name" : "jack5",
                    "Age" : 5,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 5
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 5
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "5" : {
            "Name" : "jack6",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9db"),
                    "Name" : "jack6",
                    "Age" : 6,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 6
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 6
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba0c"),
                    "Name" : "jack6",
                    "Age" : 6,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 6
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 6
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "6" : {
            "Name" : "jack7",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9dc"),
                    "Name" : "jack7",
                    "Age" : 7,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 7
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 7
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba0d"),
                    "Name" : "jack7",
                    "Age" : 7,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 7
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 7
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "7" : {
            "Name" : "jack8",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9dd"),
                    "Name" : "jack8",
                    "Age" : 8,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 8
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 8
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba0e"),
                    "Name" : "jack8",
                    "Age" : 8,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 8
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 8
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "8" : {
            "Name" : "jack9",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9de"),
                    "Name" : "jack9",
                    "Age" : 9,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 9
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 9
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba0f"),
                    "Name" : "jack9",
                    "Age" : 9,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 9
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 9
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "9" : {
            "Name" : "jack10",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9df"),
                    "Name" : "jack10",
                    "Age" : 10,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 10
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 10
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba10"),
                    "Name" : "jack10",
                    "Age" : 10,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 10
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 10
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "10" : {
            "Name" : "jack11",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e0"),
                    "Name" : "jack11",
                    "Age" : 11,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 11
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 11
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba11"),
                    "Name" : "jack11",
                    "Age" : 11,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 11
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 11
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "11" : {
            "Name" : "jack12",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e1"),
                    "Name" : "jack12",
                    "Age" : 12,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 12
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 12
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba12"),
                    "Name" : "jack12",
                    "Age" : 12,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 12
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 12
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "12" : {
            "Name" : "jack13",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e2"),
                    "Name" : "jack13",
                    "Age" : 13,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 13
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 13
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba13"),
                    "Name" : "jack13",
                    "Age" : 13,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 13
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 13
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "13" : {
            "Name" : "jack14",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e3"),
                    "Name" : "jack14",
                    "Age" : 14,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 14
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 14
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba14"),
                    "Name" : "jack14",
                    "Age" : 14,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 14
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 14
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "14" : {
            "Name" : "jack15",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e4"),
                    "Name" : "jack15",
                    "Age" : 15,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 15
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 15
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba15"),
                    "Name" : "jack15",
                    "Age" : 15,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 15
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 15
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "15" : {
            "Name" : "jack16",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e5"),
                    "Name" : "jack16",
                    "Age" : 16,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 16
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 16
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba16"),
                    "Name" : "jack16",
                    "Age" : 16,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 16
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 16
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "16" : {
            "Name" : "jack17",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e6"),
                    "Name" : "jack17",
                    "Age" : 17,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 17
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 17
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba17"),
                    "Name" : "jack17",
                    "Age" : 17,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 17
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 17
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "17" : {
            "Name" : "jack18",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e7"),
                    "Name" : "jack18",
                    "Age" : 18,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 18
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 18
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba18"),
                    "Name" : "jack18",
                    "Age" : 18,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 18
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 18
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "18" : {
            "Name" : "jack19",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e8"),
                    "Name" : "jack19",
                    "Age" : 19,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 19
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 19
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba19"),
                    "Name" : "jack19",
                    "Age" : 19,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 19
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 19
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "19" : {
            "Name" : "jack20",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9e9"),
                    "Name" : "jack20",
                    "Age" : 20,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 20
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 20
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba1a"),
                    "Name" : "jack20",
                    "Age" : 20,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 20
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 20
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "20" : {
            "Name" : "jack21",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9ea"),
                    "Name" : "jack21",
                    "Age" : 21,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 21
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 21
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba1b"),
                    "Name" : "jack21",
                    "Age" : 21,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 21
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 21
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "21" : {
            "Name" : "jack22",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9eb"),
                    "Name" : "jack22",
                    "Age" : 22,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 22
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 22
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba1c"),
                    "Name" : "jack22",
                    "Age" : 22,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 22
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 22
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "22" : {
            "Name" : "jack23",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9ec"),
                    "Name" : "jack23",
                    "Age" : 23,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 23
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 23
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba1d"),
                    "Name" : "jack23",
                    "Age" : 23,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 23
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 23
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "23" : {
            "Name" : "jack24",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9ed"),
                    "Name" : "jack24",
                    "Age" : 24,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 24
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 24
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba1e"),
                    "Name" : "jack24",
                    "Age" : 24,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 24
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 24
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "24" : {
            "Name" : "jack25",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9ee"),
                    "Name" : "jack25",
                    "Age" : 25,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 25
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 25
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba1f"),
                    "Name" : "jack25",
                    "Age" : 25,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 25
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 25
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "25" : {
            "Name" : "jack26",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9ef"),
                    "Name" : "jack26",
                    "Age" : 26,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 26
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 26
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba20"),
                    "Name" : "jack26",
                    "Age" : 26,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 26
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 26
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "26" : {
            "Name" : "jack27",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f0"),
                    "Name" : "jack27",
                    "Age" : 27,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 27
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 27
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba21"),
                    "Name" : "jack27",
                    "Age" : 27,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 27
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 27
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "27" : {
            "Name" : "jack28",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f1"),
                    "Name" : "jack28",
                    "Age" : 28,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 28
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 28
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba22"),
                    "Name" : "jack28",
                    "Age" : 28,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 28
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 28
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "28" : {
            "Name" : "jack29",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f2"),
                    "Name" : "jack29",
                    "Age" : 29,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 29
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 29
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba23"),
                    "Name" : "jack29",
                    "Age" : 29,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 29
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 29
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "29" : {
            "Name" : "jack30",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f3"),
                    "Name" : "jack30",
                    "Age" : 30,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 30
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 30
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba24"),
                    "Name" : "jack30",
                    "Age" : 30,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 30
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 30
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "30" : {
            "Name" : "jack31",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f4"),
                    "Name" : "jack31",
                    "Age" : 31,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 31
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 31
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba25"),
                    "Name" : "jack31",
                    "Age" : 31,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 31
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 31
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "31" : {
            "Name" : "jack32",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f5"),
                    "Name" : "jack32",
                    "Age" : 32,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 32
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 32
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba26"),
                    "Name" : "jack32",
                    "Age" : 32,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 32
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 32
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "32" : {
            "Name" : "jack33",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f6"),
                    "Name" : "jack33",
                    "Age" : 33,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 33
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 33
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba27"),
                    "Name" : "jack33",
                    "Age" : 33,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 33
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 33
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "33" : {
            "Name" : "jack34",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f7"),
                    "Name" : "jack34",
                    "Age" : 34,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 34
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 34
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba28"),
                    "Name" : "jack34",
                    "Age" : 34,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 34
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 34
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "34" : {
            "Name" : "jack35",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f8"),
                    "Name" : "jack35",
                    "Age" : 35,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 35
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 35
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba29"),
                    "Name" : "jack35",
                    "Age" : 35,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 35
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 35
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "35" : {
            "Name" : "jack36",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9f9"),
                    "Name" : "jack36",
                    "Age" : 36,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 36
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 36
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba2a"),
                    "Name" : "jack36",
                    "Age" : 36,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 36
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 36
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "36" : {
            "Name" : "jack37",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9fa"),
                    "Name" : "jack37",
                    "Age" : 37,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 37
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 37
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba2b"),
                    "Name" : "jack37",
                    "Age" : 37,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 37
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 37
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "37" : {
            "Name" : "jack38",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9fb"),
                    "Name" : "jack38",
                    "Age" : 38,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 38
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 38
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba2c"),
                    "Name" : "jack38",
                    "Age" : 38,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 38
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 38
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "38" : {
            "Name" : "jack39",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9fc"),
                    "Name" : "jack39",
                    "Age" : 39,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 39
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 39
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba2d"),
                    "Name" : "jack39",
                    "Age" : 39,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 39
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 39
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "39" : {
            "Name" : "jack40",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9fd"),
                    "Name" : "jack40",
                    "Age" : 40,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 40
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 40
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba2e"),
                    "Name" : "jack40",
                    "Age" : 40,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 40
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 40
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "40" : {
            "Name" : "jack41",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9fe"),
                    "Name" : "jack41",
                    "Age" : 41,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 41
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 41
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba2f"),
                    "Name" : "jack41",
                    "Age" : 41,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 41
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 41
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "41" : {
            "Name" : "jack42",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2b9ff"),
                    "Name" : "jack42",
                    "Age" : 42,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 42
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 42
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba30"),
                    "Name" : "jack42",
                    "Age" : 42,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 42
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 42
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "42" : {
            "Name" : "jack43",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba00"),
                    "Name" : "jack43",
                    "Age" : 43,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 43
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 43
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba31"),
                    "Name" : "jack43",
                    "Age" : 43,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 43
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 43
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "43" : {
            "Name" : "jack44",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba01"),
                    "Name" : "jack44",
                    "Age" : 44,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 44
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 44
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba32"),
                    "Name" : "jack44",
                    "Age" : 44,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 44
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 44
                        }
                    ]
                }
            ],
            "count" : 2
        },
        "44" : {
            "Name" : "jack45",
            "Person" : [ 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba02"),
                    "Name" : "jack45",
                    "Age" : 45,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 45
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 45
                        }
                    ]
                }, 
                {
                    "_id" : ObjectId("54461dce69f872cf5ea2ba33"),
                    "Name" : "jack45",
                    "Age" : 45,
                    "Address" : [ 
                        "henan", 
                        "wuhan"
                    ],
                    "Course" : [ 
                        {
                            "Name" : "shuxue",
                            "Score" : 45
                        }, 
                        {
                            "Name" : "wuli",
                            "Score" : 45
                        }
                    ]
                }
            ],
            "count" : 2
        }
    }
    复制代码

     mapReduce

     mapReduce其实是一种编程模型,用在分布式计算中,其中有一个“map”函数,一个”reduce“函数。

       map:

              这个称为映射函数,里面会调用emit(key,value),集合会按照你指定的key进行映射分组。

       reduce:

             这个称为简化函数,会对map分组后的数据进行分组简化,注意:在reduce(key,value)中的key就是

          emit中的key,vlaue为emit分组后的emit(value)的集合,这里也就是很多{"count":1}的数组。

       mapReduce:

              这个就是最后执行的函数了,参数为map,reduce和一些可选参数。

    在MongoDB存储的文档上执行聚合操作非常有用,这种方式的一个限制是聚合函数(比如,SUM、AVG、MIN、MAX)需要通过mapper和reducer函数来定制化实现。

    MongoDB没有原生态的用户自定义函数(UDFs)支持。但是它允许使用db.system.js.save命令来创建并保存JavaScript函数,JavaScript函数可以在MapReduce中复用。

    第一种统计方式--对应集合直接统计

    1.在MongoDB javascript Shell中对Array对象进行了一些扩展,其中新增sum方法,以方便统计数据之用的。

    复制代码
    Array.sum=function(arr){
    if(arr.length == 0)
    return null;
    var s = arr[0];
    for(var i = 1; i < arr.length; i++)
    s += arr[i];
    return s;
    }
    复制代码

    2.例子:按照名称分组,统计每组年龄的和,条件是年龄小于2.

    如果统计数量:var map = function(){ emit(this.Name, 1); }   其实是让值永远为1

    var map = function(){ emit(this.Name, this.Age); }
    var reduce = function( key, values ){ return Array.sum(values); }
    var options = {query: { Age: {$lt: 2} }, out: { inline : 1 }}
    db.Person.mapReduce(map,reduce,options)

    结果如下

    复制代码
    /* 0 */
    {
        "results" : [ 
            {
                "_id" : "jack1",
                "value" : 2
            }
        ],
        "timeMillis" : 0,
        "counts" : {
            "input" : 2,
            "emit" : 2,
            "reduce" : 1,
            "output" : 1
        },
        "ok" : 1,
        "_o" : {
            "results" : [ 
                {
                    "_id" : "jack1",
                    "value" : 2
                }
            ],
            "timeMillis" : 0,
            "counts" : {
                "input" : 2,
                "emit" : 2,
                "reduce" : 1,
                "output" : 1
            },
            "ok" : 1
        },
        "_keys" : [ 
            "results", 
            "timeMillis", 
            "counts", 
            "ok"
        ],
        "_db" : {
            "_mongo" : "connection to localhost:27017{ SSL: { sslSupport: false, sslPEMKeyFile: "" } }{ SSH: { host: "", port: 22, user: "", password: "", publicKey: { publicKey: "", privateKey: "", passphrase: "" }, currentMethod: 0 } }",
            "_name" : "local",
            "system.indexes" : "local.system.indexes",
            "prototype" : "local.prototype",
            "startup_log" : "local.startup_log",
            "TestCollection" : "local.TestCollection",
            "TestCollection.Person" : "local.TestCollection.Person",
            "DemoTest" : "local.DemoTest",
            "DemoTest.Person" : "local.DemoTest.Person",
            "system" : "local.system",
            "system.js" : "local.system.js",
            "mythings" : "local.mythings",
            "age_totals" : "local.age_totals",
            "Person" : "local.Person"
        }
    }
    复制代码

    分析一下:
    1. map部分
    作用:用于分组的。
    emit(param1, param2)
    param1:需要分组的字段,this.字段名。
    param2:需要进行统计的字段,this.字段名。

    2. reduce部分
    作用:处理需要统计的字段
    var reduce = function(key, values){
    ......统计字段处理
    }
    key: 指分组字段(emit的param1)对应的值
    values:指需要统计的字段(emit的param2)值组成的数组

    简单介绍统计常用的方法:
    * 对数值类型进行求和

    1
    2
    3
    4
    <span style="font-size: 16px;">var reduce = function(key, values){
    return Array.sum(values);
    }
    </span>

    * 对字符串类型进行拼凑

    1
    2
    3
    <span style="font-size: 16px;">var reduce = function(key, values){
    return values.join(', ');
    }</span>

    3. options部分
    { query: { age: {$lt: 25} }, out: "name_totals" }
    query:先筛选符合条件的记录出来,再进行分组统计。
    out:将分组统计后的结果输出到哪个集合当中。
    默认情况下,out所指定的集合在数据库断开连接后再次打开时,依旧存在,并保留之前的所有记录的。

    4. 执行分组统计
    >db.集合名.mapReduce( map, reduce, options )

    第二种统计方式--命令统计

    1.命令如下:

    注意:out参数 out:"Person_Name" 代表会创建一个临时表Person_Name 然后再从临时表中查找,out:{inline:1} 代表直接显示在当前命令执行的结果中

    复制代码
    var map = function(){ emit(this.Name, this.Age); }
    var reduce = function( key, values ){ return Array.sum(values); }
    db.runCommand({
        mapreduce:"Person",
        map:map,
        reduce:reduce,
        out:"Person_Name",
        keeptemp: false,
        query: { Age:{ $lt: 2 }},
        sort:{ Name:1},
    limit:3
    })
    复制代码

     解析:
    mapreduce:
    分组统计的集合名
    eg:
    mapreduce: 'mythings'
    不能写成mapreduce: mythings,否则报异常:mythings is not defined

    map,reduce :
    同上,不做阐述

    out :
    将分组统计结果输出到某个集合。
    注意:不能缺省,必须指定名称,否则报错,报错如下:
    “exception: 'out' has to be a string or an object”

    keeptemp :
    是否保留临时集合(指out指定的集合)
    keeptemp:false时会在数据库断开连接后,MongoDB会移除该集合的所有记录。而不是删除。
    keeptemp:true时即使数据库断开连接后,再次连接上,该临时集合依旧保持之前所有记录。
    keeptemp默认值为true。

    query :
    筛选记录后,再进行分组统计
    eg:
    query: { age:{ $lt: 25 }}

    sort :
    对分组统计的集合进行排序,也即先排序,后再执行分组统计的。
    注意:这里的排序需要用到索引,必须先创建索引。

    limit :

    对分组统计的集合先进行限制返回记录的条数,然后再去进行统计操作。注意:不要理解成对统计后的结果进行限制返回记录条数。

    verbose :
    显示时间统计信息,取值为true/false

    参考资料

    http://www.cnblogs.com/shanyou/archive/2012/08/05/2624073.html

    http://www.52ij.com/jishu/3925.html

  • 相关阅读:
    MySQL数据库基础
    Django框架
    Python基础
    C#
    小功能
    数据结构与算法
    C语言
    Robot Framework高级
    Robot Framework初级
    C++基础
  • 原文地址:https://www.cnblogs.com/eer123/p/7077676.html
Copyright © 2020-2023  润新知