関連リンク

Node.js

関連リンク:MongoDB Node.js Driver

  1. プロジェクトを初期化します。
        mkdir node-mongodb-demo
        cd node-mongodb-demo
        npm init
  2. Install the driver package and toolkit.
    npm install mongodb node-uuid sprintf-js –save
  3. ApsaraDB for MongoDB インスタンスの connection strings を取得します。
  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;
            }
            // 認証する。 ここの username は 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. ドライバパッケージとツールキットをインストールします。
        $ pecl install mongodb
        $ echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` 
        $ composer require "mongodb/mongodb=^1.0.0"
  2. Obtain connection strings of ApsaraDB for MongoDB instances.
  3. Use the following PHP sample code.
        <? 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 を構築します。
            # 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 インスタンスの connection strings を取得します。
  2. 次の Java サンプルコードを使用します。
    • Maven の構成
          <dependencies> 
              <dependency> 
                  <groupId>org.mongodb</groupId>
                  <artifactId>mongo-java-driver</artifactId>
                  <version>3.0.4</version>
              </dependency> 
          </dependencies> 
    • Java サンプルコード
          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()));
                  // 操作オプションを構築します。 実際の要件に基づいて、requiredReplicaSetName 以外のオプションを構成します。 ほとんどのシナリオでは、デフォルトのパラメータ設定で十分です。
                  MongoClientOptions options = MongoClientOptions.builder()
                          .requiredReplicaSetName(ReplSetName).socketTimeout(2000)
                          .connectionsPerHost(1).build();
                  return new MongoClient(seedList, credentials, options);
              }
              public static MongoClient createMongoDBClientWithURI() {
                  //  URI を使用して MongoClient を初期化します。
                  //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 インスタンスの connection strings を取得します。
  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)
            # 認証する。 ここの username は admin データベースの認証用です。
            client.admin.authenticate(username, password)
            # 例として test データベースの collection:testColl を使用します。 ドキュメントを挿入し、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