Mongo查询返回明显的计数,大文件

时间:2016-06-21 08:54:21

标签: mongodb

我需要能够计算出不同的“事务”,我遇到的问题是使用.distinct()会因为文档太大而返回错误。

我也不熟悉聚合。

我需要能够通过'agencyID'对其进行分组,如下所示,有2种不同的代理商ID

enter image description here

enter image description here

我需要能够计算代理商ID为transactions等的01721487

db.myCollection.distinct("bookings.transactions").length

这不起作用,因为我需要能够按代理商ID分组,如果结果太多,我会收到错误消息,说它太大了。

{
    "_id" : ObjectId("5624a610a6e6b53b158b4744"),
    "agencyID" : "01721487",
    "paxID" : "-530189664",
    "bookings" : [ 
        {
            "bookingID" : "24232",
            "transactions" : [ 
                {
                    "tranID" : "001",
                    "invoices" : [ 
                        {
                            "invNum" : "1312",
                            "type" : "r",
                            "inv_date" : "20150723",
                            "inv_time" : "0953",
                            "inv_val" : -300
                        }
                    ],
                    "tranType" : "Fee",
                    "tranDate" : "20150723",
                    "tranTime" : "0952",
                    "opCode" : "admin",
                    "udf_1" : "j s"
                }
            ],
            "acctID" : "acct11",
            "agt_id" : "xy"
        }
    ],
    "title" : "",
    "firstname" : "",
    "surname" : "f bar"
}

I've also tried this但它对我不起作用。

1 个答案:

答案 0 :(得分:1)

感谢您提供的文字数据 - 这是你可以玩的东西:

db.kieron.aggregate([{
            $unwind : "$bookings"
        }, {
            $match : {
                "bookings.transactions" : {
                    $exists : true,
                    $not : {
                        $size : 0
                    }
                }
            }
        }, {
            $group : {
                _id : "$agencyID",
                count : {
                    $sum : {
                        $size : "$bookings.transactions"
                    }
                }
            }
        }
    ])

因为有嵌套数组我们需要首先解开它,然后我们可以检查内部数组的大小。

快乐的报道!