ApsaraDB for MongoDBは、MongoDBプロトコルと完全に互換性があります。 このトピックでは、さまざまな言語のシャードクラスタインスタンスに接続するために使用されるサンプルコードについて説明します。
前提条件
シャードクラスタインスタンスの接続文字列が取得されます。 詳細については、「シャードクラスターインスタンスへの接続」をご参照ください。
あなたの言語の公式ドライバパッケージがダウンロードされてインストールされます。 詳細については、MongoDBドライバーをご参照ください。
シャードクラスターインスタンスに接続するには、次のコードでreplicaSet関連のパラメーターを指定する必要はありません。
Node.js
関連リンク: MongoDB Node.js Driver
クライアントで次のコマンドを実行して、プロジェクトを初期化します。
mkdirノード-mongodb-デモ cdノード-mongodb-デモ npm init
次のコマンドを実行して、ドライバーパッケージとツールキットをインストールします。
npm install mongodb node-uuid sprintf-js
ApsaraDB for MongoDBインスタンスへの接続に使用される情報を取得します。
次のNode.jsサンプルコードを使用します。
const sprintf = require("sprintf-js").sprintf; const MongoClient = require('mongodb').MongoClient; const host1 = "dds-********** .mongodb.rds.aliyuncs.com"; const port1 = 3717; const host2 = "dds-********** .mongodb.rds.aliyuncs.com"; constポート2 = 3717; const username = "root"; const password = "*********"; // const replSetName = "mgset-**********"; const demoDb = "テスト"; const demoColl = "testColl"; // 高可用性を確保するために、シャードクラスターの接続文字列を使用することを推奨します。 const url = sprintf("mongodb:// % s:% s @ % s:% d、% s:% d/admin" 、 ユーザー名、パスワード、host1、port1、host2、port2); console.info("url:" 、url); const client = new MongoClient(url); // MongoClientを取得します。 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 AliCoudDB 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);
PHP
関連リンク: MongoDB PHP Driver
Install the driver package and toolkit.
が必要です$ pecl install mongodb $echo "extension=mongodb.so" >> 'php -- ini | grep "Loaded Configuration" | sed -e "s |.*:\s * |"' $composerには "mongodb/mongodb=^ 1.0.0"
ApsaraDB for MongoDBインスタンスへの接続に使用される情報を取得します。
次のPHPサンプルコードを使用します。
<?php 'vendor/autoload.php' が必要です。// Composerグッズを含める # インスタンス情報を指定します。 $demo_seed1 = '********* .mongodb.test.aliyun-inc.com:3717'; $demo_seed2 = '********* .mongodb.test.aliyun-inc.com:3717'; $demo_replname = "mgset-**********"; $demo_user = 'root'; $demo_password = '**********'; $demo_db = 'admin'; # インスタンス情報に基づいてMongoDB接続文字列を作成します。 # mongodb://[username:password @]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[データベース][? オプション]] $demo_uri = 'mongodb:// 'です。 $demo_user。 ':' . $demo_passwordです。 '@' . $demo_seed1 . ',' . $demo_seed2です。 '/' . $demo_db; $client = new MongoDB\Client($demo_uri); $collection = $client->testDb->testColl; $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"; } ?>
Java
関連リンク:
ApsaraDB for MongoDB インスタンスに接続するために必要な情報を取得します。
次の Java サンプルコードを使用します。
Maven設定
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.12.10</version> </dependency> </dependencies>
Java code
パッケージmongodb; java.util.ArrayListをインポートします。java.util.Listをインポートします。java.util.UUIDをインポートします。org.bson.BsonDocumentをインポートします。org.bson.BsonStringをインポートします。org.bson.Documentをインポートします。import com.mo ngodb.MongoClient; import com.mo ngodb.MongoClientOptions; com.mo ngodb.MongoClientURIをインポートします。import com.mo ngodb.MongoCredential; com.mo ngodb.ServerAddressをインポートします。com.mo ngodb.client.MongoCollectionをインポートします。com.mo ngodb.client.MongoCursorをインポートします。com.mo ngodb.client.MongoDatabaseをインポートします。public class shardingConnectTest { public static ServerAddress seed1 = new ServerAddress("11.238.XX.XX." 、 3717); public static ServerAddress seed2 = new ServerAddress("11.238.XX.XX." 、 3717); public static String username = "autotest"; public static String password = "autotest"; // public static String replSetName = "mgset-***********"; 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. ほとんどのシナリオでは、デフォルトのパラメーター設定で十分です。 MongoClientOptions options = MongoClientOptions.builder().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]]][/[データベース][? オプション]] MongoClientURI connectionString = new MongoClientURI("mongodb://" + username + ":" + password + "@" + seed1 + "、" + seed2 + "/" + DEFAULT_DB); return new MongoClient(connectionString); } public static void main(String args[]) { 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()); } } 最後に{ // クライアントをオフにしてリソースを解放します。 client.close(); } 戻る; } }
Python
関連リンク: pymongo 4.1.1。
PyMongo をインストールします。
pip3インストールpymongo
ApsaraDB for MongoDBインスタンスへの接続に使用される情報を取得します。
次のPythonサンプルコードを使用します。
import sys pymongoインポートからMongoClient uri = 'mongodb:// % s:% s @ dds-bp18365e467ea5c4 **** .mongodb.rds.aliyuncs.com:3717/admin' username = 'root' password = 'MongoDB ****' client = MongoClient(uri % (ユーザー名、パスワード)) ret = client.admin.com mand('ping')['ok'] if ret: プリント (「pingに成功! 」) else: 印刷 (「pingに失敗しました! 」) sys.exit (1) db=クライアント ['baz'] coll = db['quz'] uuid = coll.insert_one({'hello': 'world'}).inserted_id プリント ('Id: % s' % uuid) ret = coll.find_one({"_id": uuid}) プリント (ret)
C#
関連リンク: MongoDB C# Driver
次のコマンドを実行して、ドライバーパッケージをインストールします。
インストール-パッケージmongocsharpdriver
ApsaraDB for MongoDBインスタンスへの接続に使用される情報を取得します。
次のC# サンプルコードを使用します。
MongoDB.Driverの使用システムを使用して; System.Collections.Generic; の使用 名前空間Aliyun { class Program { static void Main(string[] args) { // インスタンス情報を指定します。 const文字列host1 = "dds-t4n *************** .mongodb.singapore.rds.aliyuncs.com"; const int port1 = 3717; const文字列host2 = "dds-t4n *************** .mongodb.singapore.rds.aliyuncs.com"; const int port2 = 3717; const文字列replicaSetName = "mgset-300 ******"; const文字列admin = "admin"; const文字列userName = "root"; const string passwd = "********"; try { Console.WriteLine("connecting...") MongoClientSettings settings=新しいMongoClientSettings(); リスト <MongoServerAddress> servers = newリスト <MongoServerAddress>(); サーバー追加 (新しいMongoServerAddress(host1, port1)); サーバー追加 (新しいMongoServerAddress(host2、port2)); サーバー=サーバー; // ReplicaSetNameを設定します。 設定。ReplicaSetName = replicaSetName; // タイムアウト時間を3秒に設定します。 設定。ConnectTimeout = new TimeSpan(0、0、0、0、3、0); MongoCredential資格情報=MongoCredential.CreateCredential(admin, userName, passwd); settings.Credential=資格情報; MongoClientクライアント=新しいMongoClient (設定); var server = client.GetServer(); MongoDatabase database = server.GetDatabase("test"); var collection = database.GetCollection <ユーザー>("test_collection"); User user = new User(); user.id = "1"; user.name = "mongo_test"; user.sex = "female"; // データユーザーを挿入します。 collection.Insert (ユーザー); // データエントリを取得します。 User result = collection.FindOne(); Console.WriteLine("id:" + result.id + "name:" + result.name + "sex:" + result.sex); Console.WriteLine("connection successful..."); } catch (Exception e) { Console.WriteLine("connection failed:" + e. メッセージ); } } } クラスUser { public string id { set; get; } パブリック文字列名 {set; get; } public string sex { set; get; } } }
Go
関連リンク: MongoDB Go Driver
次のドライバーパッケージをインストールします。
go ge t go.mongodb.org/mongo-driver
ApsaraDB for MongoDBインスタンスに接続するために必要な情報を取得します。
次のGoサンプルコードを使用します。
パッケージメイン import (import (import) 「コンテキスト」 "fmt" 「go.mongodb.org/mongo-driver/bson」 「go.mongodb.org/mongo-driver/mongo」 「go.mongodb.org/mongo-driver/mongo/options」 「go.mongodb.org/mongo-driver/mongo/readconcern」 「go.mongodb.org/mongo-driver/mongo/readpref」 「go.mongodb.org/mongo-driver/mongo/writeconcern」 「ログ」 ) func main() { // MongoDBサーバーにクライアントを作成し、Pingを使用して // サーバーが実行中です。 clientOpts := options.Client().ApplyURI("mongodb:// root:**** @ s-bp1 ******* .mongodb.rds.aliyuncs.com:3717、s-bp2 ******* .mongodb.rds.aliyuncs.com:3717/admin") clientOpts.SetReadPreference(readpref.PrimaryPreferred()) clientOpts.SetWriteConcern (writecocern. New (writecocern. WMajority(), writecocern. J(true), writecocern. WTimeout(1000))) 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を呼び出して、デプロイが有効でクライアントが有効であることを確認します。 // 正常に設定されました。 Pingのドキュメントで述べたように、この // サーバーが一時的に存在する可能性があるため、アプリケーションの復元力が低下します // Pingが呼び出されたときは利用できません。 if err = client.Ping(context.TODO(), nil); err! =nil { fmt.Println("ping failed!") log.Fatal(err) リターン } fmt.Println("ping successful!") // DefaultReadConcernオプションを指定して、トランザクションが開始されるようにします。 // セッションには読み取り懸念の過半数があります。 // DefaultReadPreferenceオプションとDefaultWriteConcernオプションはありません // クライアントからinheritiedされ、プライマリに設定されるように指定します // と過半数。 opts := options.Session().SetDefaultReadConcern(readcon. Majority()) sess, err := client.StartSession(opts) if err! =nil { fmt.Println("セッションの開始に失敗しました!") log.Fatal(err) リターン } defer func() { sess.EndSession(context.TODO()) fmt.Println("end session!") }() fmt.Println("セッションの開始が成功!") txnOpts := options.Transaction() result, err := sess.WithTransaction ( context.TODO(), func(sessCtx mongo.SessionContext) (インターフェイス {}, error) { collection := client.Database("baz").Collection("qux") res, err := collection.InsertMany(context.Background(), []interface {}{ bson.M{"shardkey": 0}, bson.M{"shardkey": 1}, bson.M{"shardkey": 2}}) if err! =nil { fmt.Println("結果の挿入に失敗しました!") log.Fatal(err) リターンnil, err } id := res.InsertedIDs fmt.Println("id:", id) fmt.Printf("insert result: % v\n", res) 結果:= bson.M{} フィルター:= bson.D{{"shardkey", 0}} if err := collection.FindOne(context.Background(), filter).Decode(&result); err! =nil { fmt.Println("found failed!") log.Fatal(err) リターンnil, err } return result, err }, txnOpts) if err == nil { fmt.Printf("result: % v\n", result) } }