package db import ( "go.mongodb.org/mongo-driver/mongo" "infish.cn/comm" ) type MongoDB struct { Client *mongo.Client Database *mongo.Database Databases map[string]*mongo.Database //所有数据库 } var MongoClient *MongoDB func (db *MongoDB) GetCollection(name string) *mongo.Collection { return db.Database.Collection(name) } func (db *MongoDB) GetDbCollection(dbname string, name string) *mongo.Collection { if len(dbname) < 1 { return db.GetCollection(name) } return db.GetOrCreateDatabase(dbname).Collection(name) } func (db *MongoDB) GetOrCreateDatabase(name string) *mongo.Database { datab := db.Databases[name] if datab == nil { datab = db.Client.Database(name) db.Databases[name] = datab } return datab } func NewMongoDB(bus *comm.NatsBus) *MongoDB { inst, err := bus.NewMongoDBFromConfig("box-mongo") if err != nil { panic(err) } MongoClient = &MongoDB{Client: inst.Client, Database: inst.Database, Databases: map[string]*mongo.Database{}} return MongoClient }