代码收集(收集代码片段)
将区域数据批量导入到mongodb
val count = MongoClient.ins.query(com.xiaoxi.server.region.dao.Region::class) {}.count()
//如果表中已经有数据了则不导入数据
if (count > 0) return
val regionInfo = MainServer.vertx.fileSystem().readFileBlocking(regionInfoPath).toString()
val regionObject = JsonObject(regionInfo)
MongoClient.ins.batchInsert(com.xiaoxi.server.region.dao.Region::class) {
for (regionItem in Region.all) {
val regionFileObj = regionObject.getJsonObject(regionItem.code)
if (regionFileObj != null) {
add(com.xiaoxi.server.region.dao.Region().apply {
Code = regionItem.code
Code3 = regionItem.code3
Name = regionFileObj.getString("name")
Header = regionFileObj.getString("region")
Payload = regionFileObj.getJsonObject("payload")
CreateTime = timestamp()
})
} else {
add(com.xiaoxi.server.region.dao.Region().apply {
Code = regionItem.code
Code3 = regionItem.code3
Name = regionItem.name
Header = regionItem.header
CreateTime = timestamp()
})
}
}
}.exec()
分组查询,返回map
//按照区域分组,获取对应的appId
val appInfos = MongoClient.ins.aggregate(App::class) {
match {
where(App::Status eq AppStatus.Enable.value)
where(or(App::UpdateTime lte timestamp().minus(10), App::UpdateTime eq null))
}
group {
id(App::Region)
pushByField("apps", App::AppID)
}
}.exec().associateBy({ it.getString("_id") }, { it.getJsonArray("apps") })
还没有评论,来说两句吧...