【发布时间】:2016-09-30 05:17:05
【问题描述】:
这是我在一个 mongodb 集合中拥有的文档的结构。 我想了解如何对键“代码”和嵌套 json 中的索引位置进行分组计数的 mongo 聚合(不是优先级,因为它可以是任何数字,但在嵌套的时间表内只能有 5 个值):
{
"_id" : ObjectId("5749e9fde4b0064e7362b560"),
"_class" : "com.weirdcompanyname.core.collectionname",
"rfId" : 1,
"scheduleds" : [
{
"code" : "556e4835f1eae40bdfa2f2001f2afc76",
"type" : "HT",
"priority" : 0
},
{
"code" : "8b2ab67af4f60e42f7ea64813b5795cf",
"type" : "HT",
"priority" : 1
},
{
"code" : "ed17101eb918b4d8c7c598e4884523ea",
"type" : "HT",
"priority" : 2
},
{
"code" : "7e0ffb4db",
"type" : "QZ",
"priority" : 3
},
{
"code" : "1453dfa1794f39b05f0259ad04699073",
"type" : "HT",
"priority" : 4
}
],
"created" : ISODate("2016-05-28T18:57:00.878Z")
}
我试图找到的结果是:
code index_position count
556e4835f1eae40bdfa2f2001f2afc76 0 100
8b2ab67af4f60e42f7ea64813b5795cf 1 100
ed17101eb918b4d8c7c598e4884523ea 2 100
7e0ffb4db 3 100
1453dfa1794f39b05f0259ad04699073 4 100
我可以考虑展开单个数组中的嵌套 json,然后将代码分组到代码和其他列上,比如说优先级并有计数,但问题是获取索引位置。
这在 mongo 上是否可行,我已经阅读了很多关于它的内容,我认为如果我有需要一个职位的价值,那么它是可行的,但我真的没有价值因为,我正在寻找的是每个代码及其在“计划”和计数中的索引位置。 这就是我可以用我有限的 mongo 查询技能做的事情:
db.collectionname.aggregate([{'$match':{'date_key':{'$gte': yesterday_beginning, '$lte': yesterday_end}}}, {'$unwind':'$scheduleds'}, {'$group':{'_id':{'code':'$scheduleds.code','priority':'$scheduleds.priority'}, 'rfid':{'$addToSet':'$rfId'}}}, {'$project':{'_id':0, 'code':'$_id.code', 'priority':'$_id.priority', 'totalRfid':{'$size':'$rfid'}}}, { $limit : 1000 }],{ allowDiskUse:true})
【问题讨论】:
标签: json mongodb mongodb-query pymongo