簡單的配置什么的,可以取官網看,連接地址 https://docs.mongodb.com/drivers/go ;
普通的查詢很好說,幾乎一看就明白,但是如果想要根據 _id 來查詢的話,在python中,會有一個ObjectId()的類;在golang中其實也差不多,不過變成了
primitive.ObjectIDFromHex();返回類型為 ObjectId,err;傳入參數為string;這樣的話,將返回的OID傳入filter中,即可使用ID查詢想要的數據
完整代碼如下
if oid ,err:= primitive.ObjectIDFromHex(id);err==nil{ result := make(map[string]interface{}) db.Find("user", bson.M{"_id":oid}, &result) _, _ = ctx.JSON(result) }
其中 db.Find 我自己做了一下封裝,如下
package db import ( "context" "fmt" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "log" ) var DB *mongo.Client var Database *mongo.Database func Init() { // 設置客戶端連接配置 clientOptions := options.Client().ApplyURI("mongodb://localhost:27017") // 連接到MongoDB client, err := mongo.Connect(context.TODO(), clientOptions) if err != nil { log.Fatal(err) } // 檢查連接 err = client.Ping(context.TODO(), nil) if err != nil { log.Fatal(err) } fmt.Println("Connected to MongoDB!") DB=client Database = client.Database("safety") } func Find(table string, filter interface{}, result interface{}) { //var result models.User err := Database.Collection(table).FindOne(context.TODO(), filter).Decode(result) if err != nil { fmt.Println(err) } fmt.Printf("Found a single document: %+v\n", result) //Database.Collection(table).UpdateOne(context.TODO(),bson.M{"_id":"123"},bson.M{"name":"你好"}) //return result } func Insert(table string,data interface{}){ _, _ = Database.Collection(table).InsertOne(context.TODO(), data) }