現代の Web 開発では、データベースの役割がますます重要になってきています。 MongoDB は人気のある非リレーショナル データベースであり、その柔軟なデータ モデルと強力なクエリ パフォーマンスにより、多くのアプリケーションの最初の選択肢となっています。この記事の目的は、Golang を使用して MongoDB クエリを実行するプロセスを紹介することです。
MongoDB クエリに Golang の使用を開始する前に、対応する MongoDB ドライバーをインストールする必要があります。ここでは、接続管理、レスポンス読み取り、データエンコードなどの豊富な機能を提供するMongoDB公式ドライバーを紹介します。
公式 MongoDB ドライバーをインストールするには、次のコマンドを使用します。
go get go.mongodb.org/mongo-driver/mongo
このコマンドは、MongoDB Go ドライバーをダウンロードしてインストールします。
MongoDB データベースへの接続は、クエリを実行する最初のステップです。 Go では、MongoDB ドライバーによって提供される mongo.Connect()
関数を使用して MongoDB サーバーに接続します。以下は、MongoDB サーバーに接続するためのサンプル コードです:
package main import ( "context" "fmt" "log" "time" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { // Set client options clientOptions := options.Client().ApplyURI("mongodb://localhost:27017") // Connect to MongoDB client, err := mongo.Connect(context.Background(), clientOptions) if err != nil { log.Fatal(err) } // Ping the primary ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() err = client.Ping(ctx, nil) if err != nil { log.Fatal(err) } fmt.Println("Connected to MongoDB!") }
コード分析:
clientOptions
という変数を定義します。接続文字列の URL。この例では、ローカルで実行されている MongoDB サーバーに接続します。 mongo.Connect()
関数を呼び出し、MongoDB 接続オプション clientOptions を渡します。この関数は、mongo.Client 型の構造体を返します。 mongo.Client
の Ping メソッドを使用して、データベースへの接続が確立され、使用可能であることを確認します。 MongoDB データベースへの接続が確立されたら、FindOne(( )
, Find()## を使用できます。 # および
Aggregate() メソッドを使用してクエリを実行します。
次のサンプル コードを例として取り上げます。これは、MongoDB の "books" コレクションをクエリし、そのコレクションに含まれるすべてのドキュメントを返します。
package main import ( "context" "fmt" "log" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) type Book struct { Title string Author string } func main() { // Set client options clientOptions := options.Client().ApplyURI("mongodb://localhost:27017") // Connect to MongoDB client, err := mongo.Connect(context.Background(), clientOptions) if err != nil { log.Fatal(err) } // Get a handle for the "books" collection. collection := client.Database("test").Collection("books") // Find all books ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() cursor, err := collection.Find(ctx, bson.M{}) if err != nil { log.Fatal(err) } defer cursor.Close(ctx) // Iterate over the cursor and print each book for cursor.Next(ctx) { var book Book err := cursor.Decode(&book) if err != nil { log.Fatal(err) } fmt.Printf("Title: %s, Author: %s ", book.Title, book.Author) } if err := cursor.Err(); err != nil { log.Fatal(err) } }
Definition
Book
mongo.Connect
client.Database 型構造を返します。
collection次に、
collection.Find()
cursor.Next() 型構造に変換しようとします。
最後に、
cursor.Err()概要
以上がgolang+クエリモンゴの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。