近年、特にビッグ データ シナリオにおいて Golang の使用率がますます高くなっており、アプリケーションの実装に Golang を使用する開発者が増えています。 MongoDB は、高性能のドキュメント指向データベースとして、ますます多くの人に好まれ、使用されています。この記事では、Golang のクエリに MongoDB を使用する方法を紹介します。
まず、以下に示すように、MongoDB ドライバー パッケージを Golang に導入する必要があります。
import "go.mongodb.org/mongo-driver/mongo" import "go.mongodb.org/mongo-driver/mongo/options"
次に、MongoDB 接続を確立する必要があります。以下はサンプル コードです:
func ConnectMongo(uri string) (*mongo.Client, error) { client, err := mongo.NewClient(options.Client().ApplyURI(uri)) if err != nil { return nil, err } ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() err = client.Connect(ctx) if err != nil { return nil, err } return client, nil }
ここで uri
は MongoDB データベースの接続文字列です。 ConnectMongo
関数で MongoDB 接続を確立し、mongo.Client
のインスタンスを返します。
これで、クエリ操作を実行できるようになります。以下は簡単なクエリの例です。この例では、test
データベースの users
コレクションをクエリして、性別が男性であるすべてのユーザーを検索します。上記のコードでは、まず
データベース内の users
コレクションを取得し、次に bson.M
型構造を使用してクエリ条件を定義します。 、男性の性別。次に、ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
関数を使用してコンテキストを作成し、そのキャンセル関数を一時停止して、クエリの操作時間を制限し、許可します。リソースをタイムリーにリリースするため。 次に、
関数を使用してデータベースにクエリを実行します。ここで、ctx
は上で作成したコンテキスト、filter## です。 # はクエリ条件であり、カーソル
cursor が返されます。
最後に、
cursor.All(ctx, &results)
bson.M 配列に変換します。ここで、
&results結果のアドレスが操作のためにこの関数に渡されることを示します。
上記のクエリ操作に加えて、次のような他のクエリ メソッドもあります:
以下はサンプル コードです:
func FindMaleUsers(client *mongo.Client) ([]bson.M, error) { collection := client.Database("test").Collection("users") filter := bson.M{"sex": "male"} ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() cursor, err := collection.Find(ctx, filter) if err != nil { return nil, err } var results []bson.M if err = cursor.All(ctx, &results); err != nil { return nil, err } return results, nil }
bson.D
を使用してクエリ条件に完全に一致します。ここで、{"cond1" , value1} と
{“cond2”, value2} は、それぞれ MongoDB のキーと値のペアを表します。
2. 正規マッチング
func FindByCondition(client *mongo.Client) ([]bson.M, error) { collection := client.Database("test").Collection("users") filter := bson.D{ {"cond1", value1}, {"cond2", value2}, ... } ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() cursor, err := collection.Find(ctx, filter) if err != nil { return nil, err } var results []bson.M if err = cursor.All(ctx, &results); err != nil { return nil, err } return results, nil }
$regex
を使用します。"pattern" は正規表現文字列です。 。
最後に、MongoDB を使用した後、データベース接続を閉じて関連リソースを解放する必要があります。以下はサンプル コードです:
func FindByRegex(client *mongo.Client) ([]bson.M, error) { collection := client.Database("test").Collection("users") filter := bson.M{ "field": bson.M{"$regex": "pattern"}, } ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() cursor, err := collection.Find(ctx, filter) if err != nil { return nil, err } var results []bson.M if err = cursor.All(ctx, &results); err != nil { return nil, err } return results, nil }
以上がgolang mongodbクエリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。