package main import ( "context" "encoding/json" "fmt" "log" "time" "go.mongodb.org/mongo-driver/bson" md "go.mongodb.org/mongo-driver/mongo" "myschools.me/suguo/mongo-example/mongo" ) func query() { // 使用游标形式查询数据 ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() client, _ := mongo.New() defer client.Disconnect(ctx) collection := client.Database("example").Collection("person") cur, err := collection.Find(ctx, bson.D{}) if err != nil { log.Fatal(err) } defer cur.Close(ctx) for cur.Next(ctx) { var result bson.D var r2 Student err := cur.Decode(&result) if err != nil { log.Fatal(err) } err = cur.Decode(&r2) if err != nil { log.Fatal(err) } // do something with result.... fmt.Println(result) fmt.Println(r2, r2.ID.Hex()) } if err := cur.Err(); err != nil { log.Fatal(err) } } func queryBooking() { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() client, _ := mongo.New() defer client.Disconnect(ctx) collection := client.Database("example").Collection("booking") cur, err := collection.Find(ctx, bson.D{}) if err != nil { log.Fatal(err) } defer cur.Close(ctx) for cur.Next(ctx) { var book Booking if err := cur.Decode(&book); err != nil { log.Fatal(err) } ret, _ := json.Marshal(book) fmt.Println(string(ret)) } if err := cur.Err(); err != nil { log.Fatal(err) } } func queryResult() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() client, _ := mongo.New() defer client.Disconnect(ctx) collection := client.Database("example").Collection("booking") book := &Booking{} if err := collection.FindOne(ctx, bson.M{"_id": "63d20bb744ecbc6b61a283ef"}).Decode(&book); err != nil { if err == md.ErrNoDocuments { //这里的md是mongo,我们封名名需要修改 fmt.Println("record does not exist") return } log.Fatal(err) } fmt.Println(book) }