我需要能够计算出不同的“事务”,我遇到的问题是使用.distinct()会因为文档太大而返回错误。
我也不熟悉聚合。
我需要能够通过'agencyID'对其进行分组,如下所示,有2种不同的代理商ID
我需要能够计算代理商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但它对我不起作用。
答案 0 :(得分:1)
感谢您提供的文字数据 - 这是你可以玩的东西:
db.kieron.aggregate([{
$unwind : "$bookings"
}, {
$match : {
"bookings.transactions" : {
$exists : true,
$not : {
$size : 0
}
}
}
}, {
$group : {
_id : "$agencyID",
count : {
$sum : {
$size : "$bookings.transactions"
}
}
}
}
])
因为有嵌套数组我们需要首先解开它,然后我们可以检查内部数组的大小。
快乐的报道!