Docs Menu
Docs Home
/ /

MongoDB Search Community への接続

推定所要時間: 5 分

MongoDB Search Community Edition を使用するには、 MongoDB Community 配置に接続する必要があります。MongoDB Community 配置に接続するには、次の方法を使用します。

  • MongoDBへの対話型コマンドラインインターフェイスであるMongoDB Shell

  • MongoDB Compass は、MongoDB データ用の GUI です。

  • MongoDBドライバー。利用可能なすべての言語を確認するには、MongoDBドライバーのドキュメントを参照してください。

[ 言語を選択 ] ドロップダウン メニューを使用して、このページの手順のクライアントを設定します。

始める前に、次の前提条件が必要です。

  • MongoDB CommunityMongoDB Search Community

    注意

    mongodmongot プロセスの両方がを実行中いることを確認します。

  • 接続するには有効なユーザー名とパスワード

    レプリカセットでユーザーをまだ作成していない場合は、ターミナルで次のコマンドを実行してユーザーを作成します。

    1. mongosh を使用してレプリカセットに接続します。

      mongosh
    2. 次のコマンドを実行して、adminデータベースにsearchCoordinatorロールを持つ mongotUser ユーザーを作成します。MongoDB はmongotUser ユーザーを使用して mongotmongod で認証します。

      use admin
      db.createUser( {
      user: "mongotUser",
      pwd: passwordPrompt(),
      roles: [ { role: "searchCoordinator", db: "admin" } ]
      } )

      searchCoordinator ロールを持つユーザーには、readAnyDatabase 特権と __mdb_internal_searchデータベースに対する書込み権限があります。

      重要

      __mdb_internal_searchデータベースの内容は変更しないでください。

  • レプリカセットへの接続文字列

    レプリカセットの接続文字列列には 、すべてのノードが含まれます。 したがって、レプリカセット名と、すべてのレプリカセットメンバーのホスト名またはIPアドレスとポートが必要です。

  • MongoDB Compass

  • ターミナル

  • テキストエディタ

  • .NET

  • AC#プロジェクト

    プロジェクトを初期化するには、プロジェクト ディレクトリでdotnet new consoleコマンドを実行します。詳細については、 「C# クイック スタート」を参照してください。

  • ターミナル

  • テキストエディタ

  • Go

  • Goプロジェクト

    プロジェクトを初期化するには、 go modコマンドを使用します。詳細については、 「Go クイック スタート」を参照してください。

  • MongoDB Go ドライバー

    Goドライバーとドライバーの依存関係をダウンロードしてインストールするには、次のコマンドを実行します。

    go get go.mongodb.org/mongo-driver/v2/mongo
    go get github.com/joho/godotenv

Node.js ドライバーをインストールするには、ターミナルプロンプトで次のコマンドを実行します。

npm install mongodb --save
  • ターミナル

  • テキストエディタ

  • Python

    ご使用のオペレーティング システム用の最新バージョンのPythonをダウンロードするには、Pythonダウンロード ページ を参照してください。

  • ピップパッケージインストーラー

    Python 2.7.9 およびPython 3.4 以降、https://python.org からダウンロードしたパッケージには pip が含まれます。

    pip を手動でインストールするには、pip インストール ページ を参照してください。このパッケージにはPython.

レプリカセットの接続文字列を使用して、優先クライアントでレプリカセットに接続します。mongotmongod を正しく構成したことを確認するには、検索インデックスを取得するコマンドを実行します。

1
2

例は、次のようなコマンドを実行して、コマンド内のプレースホルダー値を置き換えた後に接続します。

mongosh -u <USER-NAME> -p <USER-PASSWORD> --authenticationDatabase "<AUTHENTICATION-DB>" --host <HOST-NAME> --port <PORT-NUMBER>

これでレプリカセットに接続され、ターミナルには次のようなものが表示されます。

rs0 [direct: primary] test>
3

確認するには、次の手順を実行します。

  1. movies という名前のコレクションにドキュメントを追加します。

    db.movies.insertOne({"title": "Back to the Future"})
    {
    acknowledged: true,
    insertedId: ObjectId('67e42132a1cd6f443d5337b1')
    }
  2. moviesコレクションのすべての検索インデックスを取得します。

    db.runCommand({"listSearchIndexes": "movies"});
    {
    cursor: { id: 0, ns: 'test.movies', firstBatch: [] },
    ok: 1,
    '$clusterTime': {
    clusterTime: Timestamp({ t: 1743003975, i: 1 }),
    signature: {
    hash: Binary.createFromBase64('H1nlTKJBRCfZXrWul9AhGRVpIQ0=', 0),
    keyId: Long('7484323578087735302')
    }
    },
    operationTime: Timestamp({ t: 1743003975, i: 1 })
    }

    注意

    サンプルコードでは moviesコレクションのインデックスが作成されなかったため、結果にはインデックスが含まれません。

詳細については、配置への接続を参照してください。

1
2

詳しくは、「 MongoDB への接続 」を参照してください。

次のサンプルアプリケーションは、接続文字列を使用してレプリカセットに接続し、 pingを送信して接続が成功したことを確認します。 サンプルアプリケーションをテストするには、次の手順を実行します。

  1. connectという新しいディレクトリを作成し、 dotnet newコマンドを使用してプロジェクトを初期化します。

    mkdir connect
    cd connect
    dotnet new console
  2. 次のコマンドを実行して、.NET/C# ドライバーを依存関係としてプロジェクトに追加します。

    dotnet add package MongoDB.Driver
  3. Program.csファイルで接続設定を定義します。

    Program.cs ファイルの内容を、次のコードで置き換えます。サンプルコードは、次の処理を行います。

    • ローカル配置に接続します。

    • 1 つのドキュメントを含む movies という名前のコレクションを testデータベースに挿入します。

    • コレクションのすべての検索インデックスを検索します。

    1using MongoDB.Bson;
    2using MongoDB.Driver;
    3
    4public class Connect
    5{
    6 // Replace the following with your connection string
    7 private const string MongoConnectionString = "<CONNECTION-STRING>";
    8
    9 public static void Main(string[] args)
    10 {
    11 // Connect to your replica set
    12 var client = new MongoClient(MongoConnectionString);
    13
    14 // Send a ping to confirm a successful connection
    15 try {
    16 var result = client.GetDatabase("admin").RunCommand<BsonDocument>(new BsonDocument("ping", 1));
    17 Console.WriteLine("Successfully connected to Replica Set");
    18 }
    19 catch (Exception e) { Console.WriteLine(e);}
    20
    21 // Insert a document to a collection
    22 var database = client.GetDatabase("test");
    23 var collection = database.GetCollection<BsonDocument>("movies");
    24 var movieDocument = new BsonDocument{{"title", "Back to the Future"}};
    25 try {
    26 collection.InsertOne(movieDocument);
    27 Console.WriteLine("Document inserted successfully.");
    28 }
    29 catch (Exception e) {
    30 Console.WriteLine($"Insertion error: {e.Message}");
    31 }
    32
    33 // List search indexes
    34 try {
    35 var result = collection.SearchIndexes.List().ToList();
    36 if (indexes.Count == 0) {
    37 Console.WriteLine("No indexes found on the collection.");
    38 }
    39 else {
    40 Console.WriteLine("Indexes on the collection:");
    41 foreach (var index in indexes)
    42 {
    43 Console.WriteLine(index.ToJson());
    44 }
    45 }
    46 }
    47 catch (Exception e) {
    48 Console.WriteLine($"Error listing indexes: {e.Message}");
    49 }
    50 }
    51}
  4. プレースホルダー(行 7)を接続文字列に置き換え、ファイルを保存します。

  5. アプリケーションを実行します。

    dotnet run Program.cs
    Successfully connected to MongoDB.
    Document inserted successfully.
    No indexes found on the collection.

    注意

    サンプルコードでは moviesコレクションのインデックスが作成されなかったため、結果にはインデックスが含まれません。

詳細については、「接続オプション 」を参照してください。

次のサンプルアプリケーションは、接続文字列を使用してレプリカセットに接続し、 pingを送信して接続が成功したことを確認します。 次の手順でサンプルアプリケーションをテストします。

  1. connectという新しいディレクトリを作成し、 go modコマンドを使用してプロジェクトを初期化します。

    mkdir connect
    cd connect
    go mod init connect
  2. .goファイルで接続設定を定義します。

    プロジェクトで、 connect.goという新しいファイルを作成し、次のコードを貼り付けます。

    1package main
    2
    3import (
    4 "context"
    5 "encoding/json"
    6 "fmt"
    7 "log"
    8
    9 "go.mongodb.org/mongo-driver/bson"
    10 "go.mongodb.org/mongo-driver/mongo"
    11 "go.mongodb.org/mongo-driver/mongo/options"
    12 "go.mongodb.org/mongo-driver/mongo/readpref"
    13)
    14
    15type Movie struct {
    16 Title string `bson:"title"`
    17}
    18
    19func main() {
    20 // Replace with your connection string
    21 uri := "<CONNECTION-STRING>"
    22
    23 // Connect to MongoDB
    24 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
    25 if err != nil {
    26 log.Fatalf("Failed to connect to MongoDB: %v", err)
    27 }
    28 defer func() {
    29 if err = client.Disconnect(context.TODO()); err != nil {
    30 log.Fatalf("Failed to disconnect MongoDB client: %v", err)
    31 }
    32 }()
    33
    34 // Ping to confirm connection
    35 if err := client.Ping(context.TODO(), readpref.Primary()); err != nil {
    36 log.Fatalf("Failed to ping MongoDB: %v", err)
    37 }
    38 fmt.Println("Successfully connected to MongoDB")
    39
    40 // Insert a document to a collection
    41 coll := client.Database("test").Collection("movies")
    42 newMovie := Movie{Title: "Back to the Future"}
    43 result, err := coll.InsertOne(context.TODO(), newMovie)
    44 if err != nil {
    45 log.Fatalf("Failed to insert document: %v", err)
    46 }
    47 fmt.Printf("Inserted document ID: %v\n", result.InsertedID)
    48
    49 // List search indexes
    50 listOpts := options.ListSearchIndexesOptions{}
    51 ctx := context.TODO()
    52 cursor, err := coll.SearchIndexes().List(ctx, nil, &listOpts)
    53 if err != nil {
    54 log.Fatalf("Failed to list search indexes: %v", err)
    55 }
    56
    57 var results []bson.D
    58 if err = cursor.All(ctx, &results); err != nil {
    59 log.Fatalf("Failed to iterate over cursor: %v", err)
    60 }
    61
    62 res, err := json.Marshal(results)
    63 if err != nil {
    64 log.Fatalf("Failed to marshal results to JSON: %v", err)
    65 }
    66 fmt.Println("Search indexes found:", string(res))
    67}
  3. プレースホルダー(行 15)を接続文字列に置き換え、ファイルを保存します。

  4. アプリケーションを実行します。

    go run connect.go
    Successfully connected to MongoDB
    Inserted document ID: ObjectID("67e42df345bc0b636fe340f0")
    Search indexes found: null

    注意

    サンプルコードでは moviesコレクションのインデックスが作成されなかったため、結果にはインデックスが含まれません。

詳細については、接続を参照してください。

次のサンプルアプリケーションは、 接続文字列を使用してレプリカセットに接続します。 サンプルアプリケーションをテストするには、次の手順を実行します。

  1. Javaクラスファイルで接続設定を定義します。

    次のコードを Connect.java というファイルにコピーします。

    1import com.mongodb.ConnectionString;
    2import com.mongodb.MongoClientSettings;
    3import com.mongodb.MongoException;
    4import com.mongodb.ServerApi;
    5import com.mongodb.ServerApiVersion;
    6import com.mongodb.client.MongoClient;
    7import com.mongodb.client.MongoClients;
    8import com.mongodb.client.MongoCollection;
    9import com.mongodb.client.MongoCursor;
    10import com.mongodb.client.MongoDatabase;
    11import org.bson.BsonDocument;
    12import org.bson.BsonInt64;
    13import org.bson.Document;
    14import org.bson.conversions.Bson;
    15
    16public class Connect {
    17 public static void main(String[] args) {
    18 // Replace the placeholder with your Replica Set connection string
    19 String uri = "<CONNECTION-STRING>";
    20
    21 // Construct a ServerApi instance using the ServerApi.builder() method
    22 ServerApi serverApi = ServerApi.builder()
    23 .version(ServerApiVersion.V1)
    24 .build();
    25
    26 MongoClientSettings settings = MongoClientSettings.builder()
    27 .applyConnectionString(new ConnectionString(uri))
    28 .serverApi(serverApi)
    29 .build();
    30
    31 // Create a new client and connect to the server
    32 try (MongoClient mongoClient = MongoClients.create(settings)) {
    33 MongoDatabase adminDatabase = mongoClient.getDatabase("admin");
    34 try {
    35 // Send a ping to confirm a successful connection
    36 Bson command = new BsonDocument("ping", new BsonInt64(1));
    37 adminDatabase.runCommand(command);
    38 System.out.println("Successfully connected to Replica Set");
    39 } catch (MongoException e) {
    40 System.err.println("Ping failed: " + e);
    41 }
    42
    43 // Insert a document into a collection
    44 MongoDatabase database = mongoClient.getDatabase("test");
    45 MongoCollection<Document> collection = database.getCollection("movies");
    46 Document movieDocument = new Document("title", "Back to the Future");
    47 try {
    48 collection.insertOne(movieDocument);
    49 System.out.println("Document inserted successfully.");
    50 } catch (MongoException e) {
    51 System.err.println("Insertion failed: " + e);
    52 }
    53
    54 // List search indexes
    55 try (MongoCursor<Document> resultsCursor = collection.listSearchIndexes().iterator()) {
    56 System.out.println("Search indexes found:");
    57 while (resultsCursor.hasNext()) {
    58 System.out.println(resultsCursor.next().toJson());
    59 }
    60 } catch (MongoException e) {
    61 System.err.println("Error listing indexes: " + e);
    62 }
    63 } catch (MongoException e) {
    64 System.err.println("Failed to create MongoClient: " + e);
    65 }
    66 }
    67}
  2. プレースホルダー(行 14)を接続文字列に置き換え、ファイルを保存します。

  3. IDE または次のコマンドを使用して、 Connect.javaファイルをコンパイルして実行します。

    javac Connect.java
    java Connect
    Successfully connected to Replica Set
    Document inserted successfully.
    Search indexes found:

    注意

    サンプルコードでは moviesコレクションのインデックスが作成されなかったため、結果にはインデックスが含まれません。

詳しくは、「 MongoDB への接続 」を参照してください。

次のサンプルアプリケーションは、接続文字列を使用してレプリカセットに接続し、確認メッセージを返します。 サンプルアプリケーションをテストするには、次の手順を実行します。

  1. .jsファイルで接続設定を定義します。

    次のコードを connect.js というファイルにコピーします。

    1const { MongoClient } = require("mongodb");
    2
    3const url = "<CONNECTION-STRING>";
    4
    5// Connect to your Replica Set
    6const client = new MongoClient(url);
    7
    8async function run() {
    9 try {
    10 await client.connect();
    11 console.log("Successfully connected to Replica Set");
    12
    13 // Insert a document in a collection
    14 const database = client.db("test");
    15 const coll = database.collection("movies");
    16 const doc = { title: "Back to the Future" };
    17 const insertResult = await coll.insertOne(doc);
    18 console.log(`Document inserted with _id: ${insertResult.insertedId}`);
    19
    20 // List search indexes for the collection
    21 const searchIndexesResult = await coll.listSearchIndexes().toArray();
    22 console.log("Search indexes:", searchIndexesResult);
    23 } catch (err) {
    24 console.log("Error occurred:", err.stack);
    25 } finally {
    26 await client.close();
    27 }
    28}
    29
    30run().catch(console.dir);
  2. プレースホルダー(行 4)を接続文字列に置き換え、ファイルを保存します。

  3. 次のコマンドを使用してサンプルアプリケーションを実行します。

    node connect.js
    Successfully connected to Replica Set
    Document inserted with _id: 67e432123504d5a7ed2156eb
    Search indexes: []

    注意

    サンプルコードでは moviesコレクションのインデックスが作成されなかったため、結果にはインデックスが含まれません。

詳細については、「 接続 」を参照してください。

  1. PyMongo から MongoClient をインポートします。

    実行中の MongoDB インスタンスに接続するには、PyMongo は MongoClient が必要です。ターミナルで実行されている Python shell 内で、次のコマンドを実行して MongoClient をインポートします。

    from pymongo import MongoClient
  2. .pyファイルで接続設定を定義します。

    次のコードを connect.py という名前のファイルにコピーします。

    1from pymongo import MongoClient, errors
    2
    3# Replace '<connection-string>' with your actual MongoDB connection string
    4connection_string = '<CONNECTION-STRING>'
    5
    6# Connect to MongoDB
    7try:
    8 client = MongoClient(connection_string)
    9 print("Successfully connected to MongoDB.")
    10except errors.ConnectionError as e:
    11 print("Failed to connect to MongoDB:", e)
    12 exit()
    13
    14# Access the database and collection
    15database = client["test"]
    16collection = database["movies"]
    17
    18# Insert a document into the collection
    19try:
    20 result = collection.insert_one({"title": "Back to the Future"})
    21 print(f"Document inserted with _id: {result.inserted_id}")
    22except Exception as e:
    23 print("Failed to insert document:", e)
    24
    25# List search indexes for the collection (ensure method exists)
    26try:
    27 cursor = collection.list_search_indexes()
    28 indexes = list(cursor) # Convert cursor to list for ease
    29 if indexes:
    30 print("Search indexes found:")
    31 for index in indexes:
    32 print(index)
    33 else:
    34 print("No search indexes found.")
    35except Exception as e:
    36 print("Failed to list search indexes:", e)
    37
    38# Close the client connection (Optionally used here for resource management)
    39client.close()
  3. プレースホルダー(行 4)を接続文字列に置き換え、ファイルを保存します。

  4. 次のコマンドを使用してサンプルアプリケーションを実行します。

    python connect.py
    Successfully connected to MongoDB.
    Document inserted with _id: 67e43400bd92a83c1a81cbb4
    No search indexes found.

    注意

    サンプルコードでは moviesコレクションのインデックスが作成されなかったため、結果にはインデックスが含まれません。

詳しくは、「 MongoDB への接続 」を参照してください。

レプリカセットに接続 したら、 MongoDB Search Community Edition を使用したクエリ に進みます。

項目一覧