Java 如何使用现有集合mongodb中的计算数据创建新集合

Java 如何使用现有集合mongodb中的计算数据创建新集合,java,json,mongodb,mongo-shell,Java,Json,Mongodb,Mongo Shell,嗨,我想创建一个新集合,从现有集合中获取计算数据 样本数据 {MID:100,stage:6, hustle:[{id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")}, {id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")}, {id:1,name:"jack",level:4,target

嗨,我想创建一个新集合,从现有集合中获取计算数据

样本数据

{MID:100,stage:6,
    hustle:[{id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")},
    {id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")},
    {id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")},
    {id:1,name:"jack",level:4,target:10,completedTime:new Date("2015-12-12")},
    {id:82,name:"Mario",level:2,target:8,completedTime:new Date("2015-12-15")},
    {id:82,name:"Mario",level:2,target:8,completedTime:new Date("2015-12-15")},
    {id:82,name:"Mario",level:2,target:8,completedTime:new Date("2015-12-15")},
    {id:82,name:"Mario",level:2,target:8,completedTime:new Date("2015-12-15")}]}
使用此数据创建新集合“最近的”

{
    "_id": 82,
    "name": "Mario",
    "level": 2,
    "recentTIme": ISODate("2015-12-15T00:00:00Z"),
    "accessCount": 4
} {
    "_id": 1,
    "name": "jack",
    "level": 4,
    "recentTIme": ISODate("2015-12-12T00:00:00Z"),
    "accessCount": 4
}
使用 运算符在使用聚合时创建新集合

    db.mid.aggregate([{
        $unwind: "$hustle"
    }, {
        $group: {
            _id: "$hustle.id",
            name: {
                $first: "$hustle.name"
            },
            level: {
                $first: "$hustle.level"
            },
            recentTIme: {
                $first: "$hustle.completedTime"
            },
            accessCount: {
                $sum: 1
            }
        }
    }, {
        $out: "Recent_MID"
    }]).pretty()

要创建新集合,请在聚合管道的末尾使用$out运算符