【问题标题】:How to create new collection, using computed data from existing collection mongodb如何使用来自现有集合 mongodb 的计算数据创建新集合
【发布时间】:2017-03-07 20:00:06
【问题描述】:

您好,我希望创建一个新集合,以便从现有集合中获取计算数据,

样本数据

{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")}]}

使用此数据创建新集合“Recent_MID”

{
    "_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
}

【问题讨论】:

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

标签: java json mongodb mongo-shell


【解决方案1】:

使用$out 运算符创建新集合,同时使用聚合

    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()

【讨论】:

    猜你喜欢
    • 2020-06-07
    • 2014-10-11
    • 2016-08-19
    • 2014-10-13
    • 1970-01-01
    • 2020-12-07
    • 2020-04-23
    • 1970-01-01
    • 2013-04-26
    相关资源
    最近更新 更多