inital commit
This commit is contained in:
110
find.go
Normal file
110
find.go
Normal file
@@ -0,0 +1,110 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
)
|
||||
|
||||
func checkFindErr(err error) {
|
||||
if err != nil {
|
||||
if err == mongo.ErrNoDocuments {
|
||||
return
|
||||
}
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func findAll(ctx context.Context, col *mongo.Collection) {
|
||||
ctx, span := FollowSpan(ctx, "findAll")
|
||||
defer span.End()
|
||||
|
||||
fmt.Println("replaceOne document...")
|
||||
cursor, err := col.Find(ctx, bson.M{})
|
||||
checkFindErr(err)
|
||||
|
||||
var books []Book
|
||||
err = cursor.All(ctx, &books)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Printf("Finded %d docs:\n%v\n", len(books), books)
|
||||
fmt.Println("=============================")
|
||||
}
|
||||
|
||||
func find(ctx context.Context, col *mongo.Collection) {
|
||||
ctx, span := FollowSpan(ctx, "find")
|
||||
defer span.End()
|
||||
|
||||
opts := options.Find().SetSort(bson.M{"rating": 1})
|
||||
|
||||
cursor, err := col.Find(ctx, bson.M{"year": 2022}, opts)
|
||||
checkFindErr(err)
|
||||
|
||||
var books []Book
|
||||
err = cursor.All(ctx, &books)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Println("Search documents where year equal 2022...")
|
||||
fmt.Printf("Finded %d docs:\n%v\n", len(books), books)
|
||||
fmt.Println("=============================")
|
||||
}
|
||||
|
||||
func findWithCondition(ctx context.Context, col *mongo.Collection) {
|
||||
ctx, span := FollowSpan(ctx, "findWithCondition")
|
||||
defer span.End()
|
||||
|
||||
filter := bson.M{"year": bson.M{"$gt": 2020}}
|
||||
|
||||
cursor, err := col.Find(ctx, filter)
|
||||
checkFindErr(err)
|
||||
|
||||
var books []Book
|
||||
err = cursor.All(ctx, &books)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Println("Search documents where year greather then 2020...")
|
||||
fmt.Printf("Finded %d docs:\n%v\n", len(books), books)
|
||||
fmt.Println("=============================")
|
||||
}
|
||||
|
||||
func findWithOrCondition(ctx context.Context, col *mongo.Collection) {
|
||||
ctx, span := FollowSpan(ctx, "findWithOrCondition")
|
||||
defer span.End()
|
||||
|
||||
filter := bson.M{
|
||||
"$or": bson.A{
|
||||
bson.M{
|
||||
"year": bson.M{"$gte": 2020},
|
||||
},
|
||||
bson.M{
|
||||
"author": "Касун Индрасири",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
findOptions := options.Find()
|
||||
findOptions.SetProjection(bson.M{"author": 0})
|
||||
|
||||
cursor, err := col.Find(ctx, filter, findOptions)
|
||||
checkFindErr(err)
|
||||
|
||||
var books []Book
|
||||
err = cursor.All(ctx, &books)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Println("Search documents where year greather then 2020 AND author is 'Касун Индрасири'...")
|
||||
fmt.Printf("Finded %d docs:\n%v\n", len(books), books)
|
||||
fmt.Println("=============================")
|
||||
}
|
||||
Reference in New Issue
Block a user