97 lines
2.0 KiB
Go
97 lines
2.0 KiB
Go
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)
|
||
}
|