91 lines
1.8 KiB
Go
91 lines
1.8 KiB
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"encoding/json"
|
||
|
|
"fmt"
|
||
|
|
"log"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"go.mongodb.org/mongo-driver/bson"
|
||
|
|
"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 {
|
||
|
|
log.Fatal(err)
|
||
|
|
}
|
||
|
|
fmt.Println(book)
|
||
|
|
}
|