mongo-example/query.go

97 lines
2.0 KiB
Go
Raw Normal View History

2023-01-26 06:21:19 +00:00
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"time"
"go.mongodb.org/mongo-driver/bson"
2023-01-28 07:33:45 +00:00
md "go.mongodb.org/mongo-driver/mongo"
2023-01-26 06:21:19 +00:00
"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 {
2023-01-28 07:33:45 +00:00
if err == md.ErrNoDocuments {
//这里的md是mongo我们封名名需要修改
fmt.Println("record does not exist")
return
}
2023-01-26 06:21:19 +00:00
log.Fatal(err)
}
fmt.Println(book)
}