すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:プログラムコードを使用したレプリカセットインスタンスへの接続

最終更新日:Jun 14, 2024

ApsaraDB for MongoDBは、MongoDBプロトコルと完全に互換性があります。 このトピックでは、さまざまな言語でレプリカセットインスタンスに接続するために使用されるサンプルコードについて説明します。

前提条件

あなたの言語の公式ドライバパッケージをダウンロードしてインストールしてください。 詳細については、MongoDBドライバーをご参照ください。

使用上の注意

レプリカセットインスタンスのアカウントパスワードに特殊文字 (!) が含まれている場合 @ # $ % ^ & * ( ) _ + =) では、接続文字列でこれらの特殊文字をエスケープする必要があります。 特殊文字とエスケープ文字のマッピングを次の表に示します。

特殊文字

脱出キャラクター

!

% 21

@

% 40

#

% 23

$

% 24

%

% 25

^

% 5e

&

% 26

*

% 2a

(

% 28

)

% 29

_

% 5f

+

% 2b

=

% 3d

たとえば、元のパスワードがab @#cの場合、接続文字列のパスワードはab % 40% 23cに変換されます。

Node.jsを使用してレプリカセットインスタンスに接続する

Node.js Driver For MongoDBの詳細については、「MongoDB Node.js Driver」をご参照ください。

  1. クライアントで次のコマンドを実行して、プロジェクトを初期化します。

    mkdirノード-mongodb-デモ
    cdノード-mongodb-デモ
    npm init -y 
  2. 次のコマンドを実行して、ドライバーパッケージをインストールします。

    npm install mongodb
  3. レプリカセットインスタンスへの接続に使用される情報を取得します。 詳細については、「レプリカセットインスタンスへの接続」をご参照ください。

  4. 次のサンプルコードをNode.jsとして保存します。

    const MongoClient = require('mongodb').MongoClient;
    
    // データベース名とコレクション名。 
    const demoDb = "テスト";
    const demoColl = "testColl";
    
    // 高可用性を確保するために、接続文字列URIを使用することを推奨します。 
    // コードが実行されるサーバーがApsaraDB for MongoDBインスタンスに接続できることを確認します。 
    // パスワードに特殊文字が含まれている場合は、特殊文字をエスケープします。 
    const url = "mongodb:// root:**** @ dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717、dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63 ****"
    
    console.info("url:" 、url);
    
    // MongoClientを取得します。 
    const client = new MongoClient(url);
    
    async関数run() {
        try {
            // インスタンスに接続します。 
            await client.connect();
    
            // データベースハンドルを取得します。 
            const database = client.db(demoDb);
    
            // collection ハンドルを取得します。 
            const collection = database.collection(demoColl);
    
            // レコードを組み立てます。 
            const demoName = "デモ用ノード";
            const doc = { "DEMO": demoName, "MESG": "Hello AliCloudDB For MongoDB" };
            console.info("ready insert document: ", doc);
    
            // レコードを挿入します。 
            const result = await collection.insertOne(doc);
            console.log (
                '_id: ${result.insertedId} でドキュメントが挿入されました' 、
            );
    
            // データを読み取ります。 
            const filter = { "DEMO": demoName };
            const findResult = await collection.find (フィルター);
            await findResult.forEach(console.dir);
          } 最後に{
              // 接続を閉じます。 
              await client.close();
          }
    }
    run().catch(console.dir);
                            
  5. ノードnode. jsコマンドを実行します。

PHPを使用したレプリカセットインスタンスへの接続

PHP Driver For MongoDBの詳細については、「MongoDB PHP Driver」をご参照ください。

  1. 次のコマンドを実行して、ドライバーパッケージをインストールします。

    $ pecl install mongodb
    
    # PHPのINIファイルパスを取得します。 
    $php -- ini | grep "Loaded Configuration" | sed -e "s |.*:\s * | |"
    
    # INIファイルに次の情報を追加します。 すでに存在する場合は、この手順をスキップします。 
    $extension=mongodb.so
    
    # プロジェクトディレクトリを作成してアクセスします。 
    $mkdir php-デモ
    $cd php-デモ
    
    # コンポーザを使用してMongoDB依存関係をインストールします。 コンポーザがインストールされていない場合は、https://getcomposer.org/download. からダウンロードできます。 
    $composer require mongodb/mongodb 
  2. レプリカセットインスタンスへの接続に使用される情報を取得します。 詳細については、「レプリカセットインスタンスへの接続」をご参照ください。

  3. 次のサンプルコードをmain.phpとして保存します。

    <?php
    
    'vendor/autoload.php' が必要です。// Composerグッズを含める
    
    
    // 高可用性を確保するために、接続文字列URIを使用することを推奨します。 
    // コードが実行されるサーバーがApsaraDB for MongoDBインスタンスに接続できることを確認します。 
    // パスワードに特殊文字が含まれている場合は、特殊文字をエスケープします。 
    $replicaset_url = 'mongodb:// root:**** @ dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717、dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63 **** ';
    $test_db = 'test';
    $test_coll = 'testColl';
    
    // MongoClientを作成します。 
    $client = new MongoDB\Client($replicaset_url);
    $collection = $client->$test_db->$test_coll;
    
    // レコードを挿入します。 
    $result = $collection->insertOne(['name' => 'ApsaraDB for Mongodb', 'desc' => 'Hello, Mongodb']);
    echo "オブジェクトIDで挿入されます '{$result->getInsertedId()}'", "\n";
    
    // レコードを照会します。 
    $result = $collection->find(['name' => 'ApsaraDB for Mongodb']);
    foreach ($entryとして $result) {
        echo $entry->_id, ': ', $entry->name, "\n";
    }
    
    ?> 
  4. php -f main.phpコマンドを実行します。

Javaを使用したレプリカセットインスタンスへの接続

Java Driver For MongoDBの詳細については、「MongoDB Java Driver」をご参照ください。

この例ではIDE (IntelliJ IDEAおよびEclipse IDE) が使用されています。 IDE環境でレプリカセットインスタンスに接続するには、JDKがJDK 8以降である必要があります。

  1. レプリカセットインスタンスへの接続に使用される情報を取得します。 詳細については、「レプリカセットインスタンスへの接続」をご参照ください。

  2. Maven依存関係を追加します。

    <dependencies>
            <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongodb-driver-sync</artifactId>
                <version>4.8.0</version>
            </dependency>
        </dependencies> 
  3. 次のJavaサンプルコードを使用します。

    // JDK 8以降。 
    
    静的com.mongodb.client.mo del.Filters.eqをインポートします。org.bson.Documentをインポートします。com.mo ngodb.MongoExceptionをインポートします。com.mo ngodb.client.MongoClientをインポートします。import com.mo ngodb.client.MongoClients;
    com.mo ngodb.client.MongoCollectionをインポートします。com.mo ngodb.client.MongoDatabaseをインポートします。com.mo ngodb.client.result.InsertOneResult; をインポートします。パブリッククラスMain {
        public static void main( String[] args ) {
            // 高可用性を確保するために、接続文字列URIを使用することを推奨します。 
            // コードが実行されるサーバーがApsaraDB for MongoDBインスタンスに接続できることを確認します。 
            // パスワードに特殊文字が含まれている場合は、特殊文字をエスケープします。 
            String uri = "mongodb:// root:**** @ dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717、dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63 ****";
            文字列demoDb = "test";
            String demoColl = "testColl";
    
            try (MongoClient mongoClient = MongoClients.create(uri)) {
                MongoDatabaseデータベース=mongoClient.getDatabase(demoDb);
                MongoCollection<Document> collection = database.getCollection(demoColl);
    
                // レコードを挿入します。 
                try {
                    InsertOneResult result = collection.insertOne(new Document())
                            . append("デモ" 、"デモのためのJava")
                            . 追加 ("MESG" 、"Hello AliCloudDB For MongoDB");
                    System.out.println("成功! 挿入されたドキュメントid: "+ result.getInsertedId();
                } catch (MongoException me) {
                    System.err.println("エラーのために挿入できません:" + me);
                }
    
                // 最初のレコードを照会します。 
                Document doc = collection.find(eq("DEMO", "Java for Demo")).first();
                System.out.println(doc.toJson());
    
                mongoClient.close();
            }
        }
    }
  4. IDEツールで、[実行] をクリックします。

Pythonを使用したレプリカセットインスタンスへの接続

MongoDBのPythonドライバーの詳細については、「MongoDB Pythonドライバー」をご参照ください。

この例では、Python 3.9が使用されています。

  1. PyMongoをインストールします。

    pipインストールpymongo
  2. レプリカセットインスタンスへの接続に使用される情報を取得します。 詳細については、「レプリカセットインスタンスへの接続」をご参照ください。

  3. 次のサンプルコードをMain.pyとして保存します。

    # Python 3.9を使用してコードを実行します。 
    
    pymongoインポートからMongoClient
    
    # 高可用性を確保するために、接続文字列URIを使用することを推奨します。 
    # コードが実行されるサーバーがApsaraDB for MongoDBインスタンスに接続できることを確認します。 
    # パスワードに特殊文字が含まれている場合は、特殊文字をエスケープします。 
    REPLICASET_URL = 'mongodb:// root:**** @ dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717、dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63 ****'
    testDb = 'test'
    testColl = 'testColl'
    
    # MongoClientを取得します。 
    client = MongoClient(REPLICASET_URL)
    
    
    # レコードを挿入します。 
    doc = dict(DEMO="Python for demo" 、MESG="Hello ApsaraDB For MongoDB")
    doc_id = client.testDb.testColl.insert_one(doc).inserted_id
    print ('doc_id:', doc_id)
    
    
    # レコードを照会します。 
    client.testDb.testColl.findのd(dict(DEMO="Python for demo")):
        プリント ('find documents:'、d)
    
    client.close() 
  4. python3.9 Main.pyコマンドを実行します。

C# を使用したレプリカセットインスタンスへの接続

MongoDB用C# ドライバーの詳細については、「MongoDB C# ドライバー」をご参照ください。

この例では、IDE (Visual Studio) が使用されています。

  1. Visual StudioでNuGetパッケージ管理ツールを使用する ()プロジェクト > NuGetパッケージの管理.) 次のパッケージをダウンロードします。

    MongoDB.Driver
  2. レプリカセットインスタンスへの接続に使用される情報を取得します。 詳細については、「レプリカセットインスタンスへの接続」をご参照ください。

  3. 次のC# サンプルコードを使用します。

    MongoDB.Bsonを使用する

    。MongoDB.Driverの使用
    システムを使用して;
    System.Collections.Generic; の使用
    
    名前空間Aliyun
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 高可用性を確保するために、接続文字列URIを使用することを推奨します。 
                // コードが実行されるサーバーがApsaraDB for MongoDBインスタンスに接続できることを確認します。 
                // パスワードに特殊文字が含まれている場合は、特殊文字をエスケープします。 
                const文字列replicaSetUrl = "mongodb:// root:**** @ dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717、dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63 ****";
                const文字列testDb = "test";
                const string testColl = "testColl";
    
                try
                {
    
                    // サーバーに接続し、クライアントを取得します。 
                    MongoClient client = new MongoClient(replicaSetUrl);
    
    
                    // コレクションを取得します。 
                    var database = client.GetDatabase(testDb);
                    var collection = database.GetCollection<BsonDocument>(testColl);
    
                    // レコードを挿入します。 
                    varドキュメント=新しいBsonDocument
                                {
                                    {"name" 、"Csharp for Mongodb"} 、
                                    {"desc", "Hello ApsaraDB For MongoDB"}
                                };
                    コレクションInsertOne (ドキュメント);
                    Console.WriteLine("Insert done\n");
    
                    // レコードを照会します。 
                    var cursor = collection.Find (新しいBsonDocument{ { "name", "Csharp for Mongodb" } }).ToCursor();
                    foreach (カーソル内のvar doc. ToEnumerable())
                    {
                        Console.WriteLine(doc);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("connection failed:" + e. メッセージ);
    
                }
            }
        }
    }
  4. IDEツールで、[実行] をクリックします。

Goを使用してレプリカセットインスタンスに接続する

Go Driver For MongoDBの詳細については、「MongoDB Go Driver」をご参照ください。

  1. 次のコマンドを実行して、ドライバーパッケージをインストールします。

    go ge t go.mongodb.org/mongo-driver
  2. レプリカセットインスタンスへの接続に使用される情報を取得します。 詳細については、「レプリカセットインスタンスへの接続」をご参照ください。

  3. 次のサンプルコードをmain.goとして保存します。

    パッケージメイン
    
    import (import (import)
        「コンテキスト」
        "fmt"
        「go.mongodb.org/mongo-driver/bson」
        「go.mongodb.org/mongo-driver/mongo」
        「go.mongodb.org/mongo-driver/mongo/options」
        「ログ」
    )
    
    func main() {
        // 高可用性を確保するために、接続文字列URIを使用することを推奨します。 
        // コードが実行されるサーバーがApsaraDB for MongoDBインスタンスに接続できることを確認します。 
        // パスワードに特殊文字が含まれている場合は、特殊文字をエスケープします。 
        replicaSetUrl := "mongodb:// root:**** @ dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717、dds-2ze043 **** .mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63 ****"
        testDb := "test"
        testColl := "testColl"
    
    
        clientOpts := options.Client().ApplyURI(replicaSetUrl)
    
        // サーバーに接続し、クライアントを取得します。 
        client, err := mongo.Connect(context.TODO(), clientOpts)
        if err! =nil {
            fmt.Println("connect failed!")
            log.Fatal(err)
            リターン
        }
        fmt.Println("connect successful!")
    
        // 接続を閉じます。 
        defer func() {
            if err = client.Disconnect(context.TODO()); err! =nil {
                fmt.Println("切断に失敗しました!")
                log.Fatal(err)
            }
            fmt.Println("切断成功!")
        }()
    
        // サーバーにPingを実行して、接続が成功したことを確認します。 
        if err = client.Ping(context.TODO(), nil); err! =nil {
            fmt.Println("ping failed!")
            log.Fatal(err)
            リターン
        }
        fmt.Println("ping successful!")
    
        // レコードを挿入します。 
        コレクション:= client.Database(testDb). collection (testColl)
        res, err := collection.InsertOne(context.Background(), bson.M{"hello": "world"})
        if err! =nil {
            fmt.Println("結果の挿入に失敗しました!")
            log.Fatal(err)
            リターン
        }
        id := res.InsertedID
        fmt.Println("Id: ", id)
        fmt.Printf("insert result: % v\n", res)
    
        // レコードを照会します。 
        結果:= bson.M{}
        フィルター:= bson.D{{"_id", res.InsertedID}}
        if err := collection.FindOne(context.Background(), filter).Decode(&result); err! =nil {
            fmt.Println("found failed!")
            log.Fatal(err)
            リターン
        }
        fmt.Printf("result: % v\n", result)
    }
                            
  4. go run main.goコマンドを実行します。