ホームページ > バックエンド開発 > Golang > golang mongodbクエリ

golang mongodbクエリ

WBOY
リリース: 2023-05-06 13:02:07
オリジナル
1047 人が閲覧しました

近年、特にビッグ データ シナリオにおいて 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 コレクションをクエリして、性別が男性であるすべてのユーザーを検索します。上記のコードでは、まず

test

データベース内の users コレクションを取得し、次に bson.M 型構造を使用してクエリ条件を定義します。 、男性の性別。次に、ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) 関数を使用してコンテキストを作成し、そのキャンセル関数を一時停止して、クエリの操作時間を制限し、許可します。リソースをタイムリーにリリースするため。 次に、

collection.Find(ctx, filter)

関数を使用してデータベースにクエリを実行します。ここで、ctx は上で作成したコンテキスト、filter## です。 # はクエリ条件であり、カーソル cursor が返されます。 最後に、cursor.All(ctx, &results)

関数を使用して、このカーソルを

bson.M 配列に変換します。ここで、&results結果のアドレスが操作のためにこの関数に渡されることを示します。 上記のクエリ操作に加えて、次のような他のクエリ メソッドもあります:

1. 完全一致

MongoDB では、

bson を使用できます。 .D

は完全一致条件を表します。

以下はサンプル コードです:

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. 正規マッチング

MongoDB では、クエリ操作に正規表現を使用できます。以下はサンプル コードです。

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 をクエリ操作に簡単に使用できます。完全一致でも通常の一致でも、MongoDB ドライバー パッケージを通じて簡単に実現できます。同時に、使用後はデータベース接続を直ちに閉じてリソースを解放する必要があります。

以上がgolang mongodbクエリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート