代码收集(收集代码片段)

约定不等于承诺〃 2022-08-29 10:25 325阅读 0赞

将区域数据批量导入到mongodb

  1. val count = MongoClient.ins.query(com.xiaoxi.server.region.dao.Region::class) {}.count()
  2. //如果表中已经有数据了则不导入数据
  3. if (count > 0) return
  4. val regionInfo = MainServer.vertx.fileSystem().readFileBlocking(regionInfoPath).toString()
  5. val regionObject = JsonObject(regionInfo)
  6. MongoClient.ins.batchInsert(com.xiaoxi.server.region.dao.Region::class) {
  7. for (regionItem in Region.all) {
  8. val regionFileObj = regionObject.getJsonObject(regionItem.code)
  9. if (regionFileObj != null) {
  10. add(com.xiaoxi.server.region.dao.Region().apply {
  11. Code = regionItem.code
  12. Code3 = regionItem.code3
  13. Name = regionFileObj.getString("name")
  14. Header = regionFileObj.getString("region")
  15. Payload = regionFileObj.getJsonObject("payload")
  16. CreateTime = timestamp()
  17. })
  18. } else {
  19. add(com.xiaoxi.server.region.dao.Region().apply {
  20. Code = regionItem.code
  21. Code3 = regionItem.code3
  22. Name = regionItem.name
  23. Header = regionItem.header
  24. CreateTime = timestamp()
  25. })
  26. }
  27. }
  28. }.exec()

分组查询,返回map

  1. //按照区域分组,获取对应的appId
  2. val appInfos = MongoClient.ins.aggregate(App::class) {
  3. match {
  4. where(App::Status eq AppStatus.Enable.value)
  5. where(or(App::UpdateTime lte timestamp().minus(10), App::UpdateTime eq null))
  6. }
  7. group {
  8. id(App::Region)
  9. pushByField("apps", App::AppID)
  10. }
  11. }.exec().associateBy({ it.getString("_id") }, { it.getJsonArray("apps") })

发表评论

表情:
评论列表 (有 0 条评论,325人围观)

还没有评论,来说两句吧...

相关阅读