mongo_index.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. keysUnique1 := bson.D{
  61. {"openId", 1},
  62. }
  63. indexModelUnique := mongo.IndexModel{
  64. Keys: keysUnique1, // 1 表示升序,-1 表示降序
  65. }
  66. err := Index(indexModelUnique, constant.CNamePlayer)
  67. if err != nil {
  68. return err
  69. }
  70. return nil
  71. }
  72. func SetPlayerDailyRecordIndex() error {
  73. keys := bson.D{
  74. {"userName", 1},
  75. {"status", 1},
  76. {"type", 1},
  77. }
  78. indexModel := mongo.IndexModel{
  79. Keys: keys,
  80. }
  81. err := Index(indexModel, constant.CNamePlayerDailyRecord)
  82. if err != nil {
  83. return err
  84. }
  85. return nil
  86. }
  87. func SetCNameAccountIndex() error {
  88. keysUnique := bson.D{
  89. {"openId", 1},
  90. }
  91. indexModelUnique := mongo.IndexModel{
  92. Keys: keysUnique, // 1 表示升序,-1 表示降序
  93. Options: options.Index().SetUnique(true), // 设置索引选项,例如唯一索引
  94. }
  95. err := Unique(indexModelUnique, constant.CNameAccount)
  96. if err != nil {
  97. return err
  98. }
  99. return nil
  100. }