mongo_index.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package mdb
  2. import (
  3. "context"
  4. "log"
  5. "github.com/mhaya/game/game_cluster/internal/constant"
  6. "go.mongodb.org/mongo-driver/bson"
  7. "go.mongodb.org/mongo-driver/mongo"
  8. "go.mongodb.org/mongo-driver/mongo/options"
  9. )
  10. func SetIndex() {
  11. err := SetCashOutRecordIndex()
  12. if err != nil {
  13. log.Println(err)
  14. }
  15. err = SetPlayerIndex()
  16. if err != nil {
  17. log.Println(err)
  18. }
  19. err = SetPlayerDailyRecordIndex()
  20. if err != nil {
  21. log.Println(err)
  22. }
  23. err = SetCNameAccountIndex()
  24. if err != nil {
  25. log.Println(err)
  26. }
  27. }
  28. func Unique(indexModel mongo.IndexModel, tableName string) error {
  29. _, err := MDB.Collection(tableName).Indexes().CreateOne(context.Background(), indexModel)
  30. if err != nil {
  31. return err
  32. }
  33. return nil
  34. }
  35. // Index 普通的联合索引
  36. func Index(indexModel mongo.IndexModel, tableName string) error {
  37. _, err := MDB.Collection(tableName).Indexes().CreateOne(context.Background(), indexModel)
  38. if err != nil {
  39. return err
  40. }
  41. return nil
  42. }
  43. func SetCashOutRecordIndex() error {
  44. keys := bson.D{
  45. {"userName", 1},
  46. {"nickName", 1},
  47. {"status", 1},
  48. {"type", 1},
  49. }
  50. indexModel := mongo.IndexModel{
  51. Keys: keys,
  52. }
  53. err := Index(indexModel, constant.CNameCashOutRecord)
  54. if err != nil {
  55. return err
  56. }
  57. return nil
  58. }
  59. func SetPlayerIndex() error {
  60. keys := bson.D{
  61. {"nickName", 1},
  62. }
  63. indexModel := mongo.IndexModel{
  64. Keys: keys,
  65. }
  66. err := Index(indexModel, constant.CNamePlayer)
  67. if err != nil {
  68. return err
  69. }
  70. keysUnique := bson.D{
  71. {"userName", 1},
  72. }
  73. indexModelUnique1 := mongo.IndexModel{
  74. Keys: keysUnique,
  75. Options: options.Index().SetUnique(true), // 设置索引选项,例如唯一索引
  76. }
  77. err = Unique(indexModelUnique1, constant.CNamePlayer)
  78. if err != nil {
  79. return err
  80. }
  81. keysUnique1 := bson.D{
  82. {"openId", 1},
  83. }
  84. indexModelUnique := mongo.IndexModel{
  85. Keys: keysUnique1, // 1 表示升序,-1 表示降序
  86. Options: options.Index().SetUnique(true), // 设置索引选项,例如唯一索引
  87. }
  88. err = Unique(indexModelUnique, constant.CNamePlayer)
  89. if err != nil {
  90. return err
  91. }
  92. return nil
  93. }
  94. func SetPlayerDailyRecordIndex() error {
  95. keys := bson.D{
  96. {"userName", 1},
  97. {"status", 1},
  98. {"type", 1},
  99. }
  100. indexModel := mongo.IndexModel{
  101. Keys: keys,
  102. }
  103. err := Index(indexModel, constant.CNamePlayerDailyRecord)
  104. if err != nil {
  105. return err
  106. }
  107. return nil
  108. }
  109. func SetCNameAccountIndex() error {
  110. keys := bson.D{
  111. {"userName", 1},
  112. }
  113. indexModel := mongo.IndexModel{
  114. Keys: keys,
  115. Options: options.Index().SetUnique(true), // 设置索引选项,例如唯一索引
  116. }
  117. err := Unique(indexModel, constant.CNameAccount)
  118. if err != nil {
  119. return err
  120. }
  121. keysUnique := bson.D{
  122. {"openId", 1},
  123. }
  124. indexModelUnique := mongo.IndexModel{
  125. Keys: keysUnique, // 1 表示升序,-1 表示降序
  126. Options: options.Index().SetUnique(true), // 设置索引选项,例如唯一索引
  127. }
  128. err = Unique(indexModelUnique, constant.CNameAccount)
  129. if err != nil {
  130. return err
  131. }
  132. return nil
  133. }