【问题描述】
如何使用OID作为分组字段并使用聚集查询该字段的count数?
记录类似如下:
{
"_id":{
"$oid":"5c2c165cd08e8a48af889cff"
},
"ECM_BUSI_FILE_SCANUSER":"08190242",
...
"FILE_OID":{
"$oid":"5c2c165cd08e8a48af889cfe"
},
"SYS_MIN_VERSION":1,
"SYS_MAX_VERSION":2147483647
}
记录使用FILE_OID字段进行聚集,FILE_OID是lob文件的oid字段,记录中该字段有重复非唯一。
【解决办法】
1. FILE_OID 字段是一个OID类型的字段,即对象 ID,为一个12字节的BSON 数据类型,包括如下内容:
4 字节精确到秒的时间戳
3 字节系统(物理机)标示
2 字节进程 ID
3 字节由随机数起始的序列号
2. SDB shell 中按 OID 类型字段做分组,使用 aggregate 做聚集查询,并计数:
db.cs.cl.aggregate({$group:{OID:"$OID", Total:{$count:"$OID"}}})
3. 使用内置 SQL 语句:
db.exec("select count(OID) as Total from XXX group by OID")
【参考资料】
OID 说明: http://doc.sequoiadb.com/cn/index-cat_id-1440658403-edition_id-302
aggregate:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190825-edition_id-302
group by: http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1432190963-edition_id-302