関連リンク

  • MongoDB Drivers
  • Connection String URI Format
    本ドキュメントの接続サンプルコードは、Alibaba Cloud が提供するイントラネットアドレスを使用して ApsaraDB for MongoDB に接続する場合にのみ適用されます。

Node.js

関連リンク:MongoDB Node.js Driver

  1. プロジェクトを初期化します。
    mkdir node-mongodb-demo
    cd node-mongodb-demo
    npm init
  2. driver パッケージとツールキットをインストールします。
    npm install mongodb node-uuid sprintf-js –save
  3. ApsaraDB for MongoDB インスタンスに接続するための必要な情報を取得します。

    詳細は、レプリカセットインスタンスの接続情報の取得 をご参照ください.

  4. 次の Node.js サンプルコードを使用します。
    'use strict';
    var uuid = require('node-uuid');
    var sprintf = require("sprintf-js").sprintf;
    var mongoClient = require('mongodb').MongoClient;
    var host1 = "demotest-1.mongodb.tbc3.newtest.rdstest.aliyun-inc.com";
    var port1 = 27017;
    var host2 = "demotest-2.mongodb.tbc3.newtest.rdstest.aliyun-inc.com";
    var port2 = 27017;
    var username = "demouser";
    var password = "123456";
    var replSetName = "mgset-1441984991";
    var demoDb = "test";
    var demoColl = "testColl";
    // 公式推奨されている解決策。
    var url = sprintf("mongodb://%s:%d,%s:%d/%s?replicaSet=%s", host1, port1, host2, port2, demoDb, replSetName);
    console.info("url:", url);
    // MongoClient を取得します。
    mongoClient.connect(url, function (err, db) {
        if (err) {
            console.error("connect err:", err);
            return 1;
        }
        // ApsaraDB for MongoDB へのログインに使用されるユーザー名とパスワードを認証します。 このサンプルコードのユーザー名は、admin データベースにログインするために使用されます。
        var adminDb = db.admin();
        adminDb.authenticate(username, password, function (err, result) {
            if (err) {
                console.error("authenticate err:", err);
                return 1;
            }
            // collection ハンドルを取得します。
            var collection = db.collection(demoColl);
            var demoName = "NODE:" + uuid.v1();
            var doc = { "DEMO": demoName, "MESG": "Hello AliCoudDB For MongoDB" };
            console.info("ready insert document: ", doc);
            // データを挿入します。
            collection.insertOne(doc, function (err, data) {
                if (err) {
                    console.error("insert err:", err);
                    return 1;
                }
                console.info("insert result:", data["result"]);
                // データを読み取ります。
                var filter = {"DEMO":demoName};
                collection.find(filter).toArray(function (err, items) {
                    if (err) {
                        console.error("find err:", err);
                        return 1;
                    }
                    console.info("find document: ", items);
                    // クライアントをオフにしてリソースを解放します。
                    db.close();
                });
            });
        });
    });

PHP

関連リンク:

MongoDB PHP Driver

  1. driver パッケージとツールキットをインストールします。
    $ pecl install mongodb
    $ echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
    $ composer require "mongodb/mongodb=^1.0.0"
  2. ApsaraDB for MongoDB インスタンスに接続するために必要な情報を取得します。

    詳細は、レプリカセットインスタンスの接続情報の取得 をご参照ください.

  3. 次の PHP サンプルコードを使用します。
    <?php
    require 'vendor/autoload.php'; // include Composer goodies
     # インスタンス情報を指定します。
    $demo_seed1 = 'demotest-1.mongodb.test.aliyun-inc.com:3717';
    $demo_seed2 = 'demotest-2.mongodb.test.aliyun-inc.com:3717';
    $demo_replname = "mgset-1441984463";
    $demo_user = 'root';
    $demo_password = '123456';
    $demo_db = 'admin';
    #インスタンス情報に基づいて MongoDB connection string URI を構築します。
    # mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
    $demo_uri = 'mongodb://' . $demo_user . ':' . $demo_password . '@' .
        $demo_seed1 . ',' . $demo_seed2 . '/' . $demo_db . '?replicaSet=' . $demo_replname;
    $client = new MongoDB\Client($demo_uri);
    $collection = $client->testDb->testColl;
    $result = $collection->insertOne(['name' => 'ApsaraDB for Mongodb', 'desc' => 'Hello, Mongodb']);
    echo "Inserted with Object ID '{$result->getInsertedId()}'", "\n";
    $result = $collection->find(['name' => 'ApsaraDB for Mongodb']);
    foreach ($result as $entry) {
        echo $entry->_id, ': ', $entry->name, "\n";
    }
    ?>

Java

関連リンク:

  1. ApsaraDB for MongoDB インスタンスに接続するために必要な情報を取得します。

    詳細は、レプリカセットインスタンスの接続情報の取得 をご参照ください.

  2. 次の Java サンプルコードを使用します。
    • Maven の構成
      <dependencies>
          <dependency>
              <groupId>org.mongodb</groupId>
              <artifactId>mongo-java-driver</artifactId>
              <version>3.0.4</version>
          </dependency>
      </dependencies>
    • Java code
      import java.util.ArrayList;
      import java.util.List;
      import java.util.UUID;
      import org.bson.BsonDocument;
      import org.bson.BsonString;
      import org.bson.Document;
      import com.mongodb.MongoClient;
      import com.mongodb.MongoClientOptions;
      import com.mongodb.MongoClientURI;
      import com.mongodb.MongoCredential;
      import com.mongodb.ServerAddress;
      import com.mongodb.client.MongoCollection;
      import com.mongodb.client.MongoCursor;
      import com.mongodb.client.MongoDatabase;
       public class Main {
              public static ServerAddress seed1 = new ServerAddress("demotest-1.mongodb.tbc3.newtest.rdstest.aliyun-inc.com",
                              27017);
              public static ServerAddress seed2 = new ServerAddress("demotest-2.mongodb.tbc3.newtest.rdstest.aliyun-inc.com",
                              27017);
              public static String username = "demouser";
              public static String password = "123456";
              public static String ReplSetName = "mgset-1441984463";
              public static String DEFAULT_DB = "admin";
              public static String DEMO_DB = "test";
              public static String DEMO_COLL = "testColl";
               public static MongoClient createMongoDBClient() {
                      // seed リストを構築します。
                      List<ServerAddress> seedList = new ArrayList<ServerAddress>();
                      seedList.add(seed1);
                      seedList.add(seed2);
                      // 認証情報を作成します。
                      List<MongoCredential> credentials = new ArrayList<MongoCredential>();
                      credentials.add(MongoCredential.createScramSha1Credential(username, DEFAULT_DB,
                                      password.toCharArray()));
                      // 操作オプションを構築します。 Configure options other than requiredReplicaSetName based on your actual requirements. Default parameter settings can meet requirements in most scenarios.
                      MongoClientOptions options = MongoClientOptions.builder().requiredReplicaSetName(ReplSetName)
                                      .socketTimeout(2000).connectionsPerHost(1).build();
                      return new MongoClient(seedList, credentials, options);
              }
               public static MongoClient createMongoDBClientWithURI() {
                      // MongoClient を初期化するために URI を使用します。
                      // mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
                      MongoClientURI connectionString = new MongoClientURI("mongodb://" + username + ":" + password + "@"
                                      + seed1 + "," + seed2 + "/" + DEFAULT_DB + "?replicaSet=" + ReplSetName);
                      return new MongoClient(connectionString);
              }
               public static void main(String args []){
                      MongoClient client = createMongoDBClient();
                      // or
                      // MongoClient client = createMongoDBClientWithURI();
                      try {
                              // collection ハンドルを取得します。
                              MongoDatabase database = client.getDatabase(DEMO_DB);
                              MongoCollection<Document> collection = database.getCollection(DEMO_COLL);
                              // データを挿入します。
                              Document doc = new Document();
                              String demoname = "JAVA:" + UUID.randomUUID();
                              doc.append("DEMO", demoname);
                              doc.append("MESG", "Hello AliCoudDB For MongoDB");
                              collection.insertOne(doc);
                              System.out.println("insert document: " + doc);
                              // データを読み取ります。
                              BsonDocument filter = new BsonDocument();
                              filter.append("DEMO", new BsonString(demoname));
                              MongoCursor<Document> cursor = collection.find(filter).iterator();
                              while (cursor.hasNext()) {
                                      System.out.println("find document: " + cursor.next());
                              }
                      } finally {
                              // クライアントをオフにしてリソースを解放します。
                              client.close();
                      }
                      return;
              }
      }

Python

  1. PyMongo をインストールします。
    pip install pymongo
  2. ApsaraDB for MongoDB インスタンスに接続するために必要な情報を取得します。

    詳細は、レプリカセットインスタンスの接続情報の取得 をご参照ください.

  3. 次の Python サンプルコードを使用します。
    import uuid
    from pymongo import MongoClient
     # インスタンスのプライマリノードとセカンダリノードに接続するための 2 つのアドレスを指定します。
    CONN_ADDR1 = 'demotest-1.mongodb.tbc3.newtest.rdstest.aliyun-inc.com:27017'
    CONN_ADDR2 = 'demotest-2.mongodb.tbc3.newtest.rdstest.aliyun-inc.com:27017'
    REPLICAT_SET = 'mgset-1441984463'
     username = 'demouser'
    password = '123456'
     # MongoClient を取得します。
    client = MongoClient([CONN_ADDR1, CONN_ADDR2], replicaSet=REPLICAT_SET)
     # ApsaraDB for MongoDB にログインするために使用されるユーザー名とパスワードを認証します。 このサンプルコードのユーザー名は、admin データベースにログインするために使用されます。
    client.admin.authenticate(username, password)
     # 例としてテストデータベースの collection:testColl を使用します。 doc を挿入し、DEMO 名に基づいてドキュメントを検索します。
    demo_name = 'python-' + str(uuid.uuid1())
    print 'demo_name:', demo_name
     doc = dict(DEMO=demo_name, MESG="Hello ApsaraDB For MongoDB")
    doc_id = client.test.testColl.insert(doc)
    print 'doc_id:', doc_id
     for d in client.test.testColl.find(dict(DEMO=demo_name)):
        print 'find documents:', d