Mongo DB - 仅允许匹配特定条件的文档由聚合管道的下一阶段进行分析

时间:2017-09-21 21:08:00

标签: mongodb

我有一个包含各种文档的集合,但我试图匹配并仅对符合特定条件的某个文档子集进行分组:

已扫描:是

{ "_id" : "uqtkoew8fxkqhif7t2im1geb", "_class" : "mz.co.crunchtech.vtchill.domain.tickets.PrivateWithTablesTicket", "tableId" : "59bba43c77c82a7d95b2bef2", "scanNumber" : 2, "maxScans" : 2, "scanDate" : ISODate("2017-09-18T19:36:37.045Z"), "creationDate" : ISODate("2017-09-15T11:37:20.411Z"), "type" : "pwtbday", "numberOfPeople" : 2, "eventId" : "59bba42d77c82a7d95b2bef1", "client" : { "email" : "", "phoneNumber" : "258849901374", "name" : "Rui Cossa" }, "smsState" : false, "rsvp" : 0, "scanned" : true }
{ "_id" : "wklyuxdkljjccoqymc5xee58", "_class" : "mz.co.crunchtech.vtchill.domain.tickets.PrivateWithTablesTicket", "tableId" : "None", "scanNumber" : 1, "maxScans" : 1, "scanDate" : ISODate("2017-09-21T20:14:42.383Z"), "creationDate" : ISODate("2017-09-18T23:17:47.681Z"), "type" : "pwtbday", "numberOfPeople" : 1, "eventId" : "59bba42d77c82a7d95b2bef1", "client" : { "email" : "", "phoneNumber" : "", "name" : "Gildo zefanias" }, "smsState" : false, "rsvp" : 0, "scanned" : true }
{ "_id" : "fu6dblxi3zcotnxtqhiqik28", "_class" : "mz.co.crunchtech.vtchill.domain.tickets.PrivateWithTablesTicket", "tableId" : "None", "scanNumber" : 0, "maxScans" : 1, "creationDate" : ISODate("2017-09-18T23:17:47.988Z"), "type" : "pwtbday", "numberOfPeople" : 1, "eventId" : "59bba42d77c82a7d95b2bef1", "client" : { "email" : "", "phoneNumber" : "", "name" : "Rogerio Zandamela" }, "smsState" : false, "rsvp" : 0, "scanned" : true }
{ "_id" : "2veawo9d0vya7jegdiuv5yl0", "_class" : "mz.co.crunchtech.vtchill.domain.tickets.PrivateWithTablesTicket", "tableId" : "None", "scanNumber" : 1, "maxScans" : 1, "scanDate" : ISODate("2017-09-21T20:14:42.383Z"), "creationDate" : ISODate("2017-09-18T23:17:48.015Z"), "type" : "pwtbday", "numberOfPeople" : 1, "eventId" : "59bba42d77c82a7d95b2bef1", "client" : { "email" : "", "phoneNumber" : "", "name" : "Yuka" }, "smsState" : false, "rsvp" : 0, "scanned" : true }

即使上面的所有文档都有scanDate,下面的聚合也会返回错误:

db.ticket.aggregate(
   [  {$match: {"scanned": true}},
      {
        $group : {
           _id : { day: {$dayOfMonth: "$scanDate"},hour: {$hour: "$scanDate"}},
           totalScans: { $sum: "$scanNumber"},
           count: { $sum: 1 }
        }
      }
   ]
);

ERROR:

断言:命令失败:{     “好的”:0,     “errmsg”:“无法从BSON类型null转换为Date”,     “代码”:16006,     “codeName”:“Location16006” }:聚合失败

如何将聚合仅限制为与匹配部分的条件匹配的文档

0 个答案:

没有答案
相关问题