ApsaraDB for MongoDB sepenuhnya kompatibel dengan protokol MongoDB. Topik ini menjelaskan contoh kode untuk menghubungkan ke instance mandiri dalam berbagai bahasa pemrograman.
Prasyarat
String koneksi dari instance telah diperoleh. Untuk informasi lebih lanjut, lihat Menghubungkan ke Instance.
Unduh dan instal paket driver resmi untuk bahasa Anda. Untuk informasi lebih lanjut, lihat Mulai Pengembangan dengan MongoDB.
Node.js
Untuk informasi lebih lanjut tentang driver Node.js untuk MongoDB, lihat MongoDB Node.js Driver.
Jalankan perintah berikut di klien untuk menginisialisasi proyek:
mkdir node-mongodb-demo cd node-mongodb-demo npm initJalankan perintah berikut untuk menginstal paket driver dan toolkit:
npm install mongodb node-uuid sprintf-jsPeroleh informasi koneksi dari instance mandiri.
Gunakan kode contoh Node.js berikut:
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 port2 = 3717; // Atur akun database menjadi node-test. const username = "node-test"; const password = "*********"; const replSetName = "mgset-*********"; const demoDb = "test"; const demoColl = "testColl"; const url = sprintf("mongodb://%s:%s@%s:%d,%s:%d/admin?replicaSet=%s", username, password, host1, port1, host2, port2, replSetName); console.info("url:", url); const client = new MongoClient(url); // Dapatkan MongoClient. async function run() { try { // Hubungkan ke instance mandiri. await client.connect(); // Dapatkan handle database. const database = client.db(demoDb); // Dapatkan handle koleksi. const collection = database.collection(demoColl); const demoName = "Node For Demo"; const doc = { "DEMO": demoName, "MESG": "Hello AliCoudDB For MongoDB" }; console.info("siap menyisipkan dokumen: ", doc); // Sisipkan data. const result = await collection.insertOne(doc); console.log( `Dokumen disisipkan dengan _id: ${result.insertedId}`, ); // Baca data. const filter = { "DEMO": demoName }; const findResult = await collection.find(filter); await findResult.forEach(console.dir); } finally { // Tutup koneksi. await client.close(); } } run().catch(console.dir);
PHP
Untuk informasi lebih lanjut tentang driver PHP untuk MongoDB, lihat MongoDB PHP Driver.
Instal paket driver dan toolkit.
$ pecl install mongodb $ echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"` $ composer require "mongodb/mongodb=^1.0.0"Peroleh informasi koneksi dari instance mandiri.
Gunakan kode contoh PHP berikut:
<?php require 'vendor/autoload.php'; // include Composer goodies # Tentukan informasi instance. $demo_seed1 = '**********.mongodb.test.aliyun-inc.com:3717'; $demo_seed2 = '**********.mongodb.test.aliyun-inc.com:3717'; $demo_replname = "mgset-**********"; # Atur akun database menjadi php-test. $demo_user = 'php-test'; $demo_password = '**********'; $demo_db = 'admin'; # Konstruksi string koneksi MongoDB berdasarkan informasi instance. # 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 "Disisipkan dengan Object ID '{$result->getInsertedId()}'", "\n"; $result = $collection->find(['name' => 'ApsaraDB for Mongodb']); foreach ($result as $entry) { echo $entry->_id, ': ', $entry->name, "\n"; } ?>
Java
Untuk informasi lebih lanjut tentang driver Java untuk MongoDB, lihat dokumentasi resmi atau unduh paket driver dari tautan berikut:
Peroleh informasi koneksi dari instance mandiri.
Gunakan kode contoh Java berikut:
Konfigurasi Maven
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.12.10</version> </dependency> </dependencies>Kode demo 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("**********.mongodb.tbc3.newtest.rdstest.aliyun-inc.com", 27017); public static ServerAddress seed2 = new ServerAddress("**********.mongodb.tbc3.newtest.rdstest.aliyun-inc.com", 27017); public static String username = "demouser"; public static String password = "**********"; 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() { // Konstruksi daftar seed. List<ServerAddress> seedList = new ArrayList<ServerAddress>(); seedList.add(seed1); seedList.add(seed2); // Konstruksi informasi autentikasi. List<MongoCredential> credentials = new ArrayList<MongoCredential>(); credentials.add(MongoCredential.createScramSha1Credential(username, DEFAULT_DB, password.toCharArray())); // Konstruksi opsi operasi. Konfigurasikan opsi selain requiredReplicaSetName berdasarkan kebutuhan aktual Anda. Pengaturan parameter default dapat memenuhi kebutuhan sebagian besar skenario. MongoClientOptions options = MongoClientOptions.builder().requiredReplicaSetName(ReplSetName) .socketTimeout(2000).connectionsPerHost(1).build(); return new MongoClient(seedList, credentials, options); } public static MongoClient createMongoDBClientWithURI() { // Gunakan URI untuk menginisialisasi 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(); // atau // MongoClient client = createMongoDBClientWithURI(); try { // Dapatkan handle koleksi. MongoDatabase database = client.getDatabase(DEMO_DB); MongoCollection<Document> collection = database.getCollection(DEMO_COLL); // Sisipkan data. 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("sisipkan dokumen: " + doc); // Baca data. BsonDocument filter = new BsonDocument(); filter.append("DEMO", new BsonString(demoname)); MongoCursor<Document> cursor = collection.find(filter).iterator(); while (cursor.hasNext()) { System.out.println("temukan dokumen: " + cursor.next()); } } finally { // Tutup klien dan lepaskan sumber daya. client.close(); } return; } }
Python
Untuk informasi lebih lanjut tentang driver Python untuk MongoDB, lihat Dokumentasi API.
Instal PyMongo.
pip3 install pymongoPeroleh informasi koneksi dari instance mandiri.
Gunakan kode contoh Python berikut:
import sys from pymongo import MongoClient uri = 'mongodb://%s:%s@dds-bp18365e467ea5c4****.mongodb.rds.aliyuncs.com:3717/admin' # Atur akun database menjadi python-test dan basis data autentikasi menjadi admin. username = 'python-test' password = 'MongoDB****' client = MongoClient(uri % (username, password)) ret = client.admin.command('ping')['ok'] if ret: print('ping berhasil!') else: print('ping gagal!') sys.exit(1) db = client['baz'] coll = db['quz'] uuid = coll.insert_one({'hello': 'world'}).inserted_id print('Id: %s' % uuid) ret = coll.find_one({"_id": uuid}) print(ret)
C#
Untuk informasi lebih lanjut tentang driver C# untuk MongoDB, lihat MongoDB C# Driver.
Jalankan perintah berikut untuk menginstal paket driver:
Install-Package mongocsharpdriverPeroleh informasi koneksi dari instance mandiri.
Gunakan kode contoh C# berikut:
using MongoDB.Driver; using System; using System.Collections.Generic; namespace Aliyun { class Program { static void Main(string[] args) { // Tentukan informasi instance. const string host1 = "dds-t4n**************.mongodb.singapore.rds.aliyuncs.com"; const int port1 = 3717; const string host2 = "dds-t4n**************.mongodb.singapore.rds.aliyuncs.com"; const int port2 = 3717; const string replicaSetName = "mgset-300******"; const string admin = "admin"; // Atur akun database menjadi c-test. const string userName = "c-test"; const string passwd = "********"; try { Console.WriteLine("menghubungkan...") MongoClientSettings settings = new MongoClientSettings(); List<MongoServerAddress> servers = new List<MongoServerAddress>(); servers.Add(new MongoServerAddress(host1, port1)); servers.Add(new MongoServerAddress(host2, port2)); settings.Servers = servers; // Tentukan nama instance. settings.ReplicaSetName = replicaSetName; // Atur periode timeout menjadi 3 detik. settings.ConnectTimeout = new TimeSpan(0, 0, 0, 3, 0); MongoCredential credentials = MongoCredential.CreateCredential(admin, userName, passwd); settings.Credential = credentials; MongoClient client = new MongoClient(settings); var server = client.GetServer(); MongoDatabase database = server.GetDatabase("test"); var collection = database.GetCollection<User>("test_collection"); User user = new User(); user.id = "1"; user.name = "mongo_test"; user.sex = "female"; // Sisipkan data pengguna. collection.Insert(user); // Dapatkan entri data. User result = collection.FindOne(); Console.WriteLine("id:" + result.id + " name:" + result.name + " sex:"+result.sex); Console.WriteLine("koneksi berhasil..."); } catch (Exception e) { Console.WriteLine("koneksi gagal:"+e.Message); } } } class User { public string id { set; get; } public string name { set; get; } public string sex { set; get; } } }
Go
Untuk informasi lebih lanjut tentang Go Driver untuk MongoDB, lihat MongoDB Go Driver.
Instal paket driver berikut:
go get go.mongodb.org/mongo-driverPeroleh informasi koneksi dari instance mandiri.
Gunakan kode contoh Go berikut:
package main import ( "context" "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" "log" ) func main() { // Buat Klien ke server MongoDB dan gunakan Ping untuk memverifikasi bahwa // server sedang berjalan. // Atur akun database menjadi go-test dan basis data autentikasi menjadi admin. clientOpts := options.Client().ApplyURI("mongodb://go-test:****@dds-bp1*******.mongodb.rds.aliyuncs.com:3717/admin") client, err := mongo.Connect(context.TODO(), clientOpts) if err != nil { fmt.Println("koneksi gagal!") log.Fatal(err) return } fmt.Println("koneksi berhasil!") defer func() { if err = client.Disconnect(context.TODO()); err != nil { fmt.Println("putuskan koneksi gagal!") log.Fatal(err) } fmt.Println("putuskan koneksi berhasil!") }() // Panggil Ping untuk memverifikasi bahwa deployment aktif dan Klien telah // dikonfigurasi dengan sukses. Seperti disebutkan dalam dokumentasi Ping, ini // mengurangi ketahanan aplikasi karena server mungkin sementara tidak tersedia saat Ping dipanggil. if err = client.Ping(context.TODO(), nil); err != nil { fmt.Println("ping gagal!") log.Fatal(err) return } fmt.Println("ping berhasil!") // Tentukan opsi DefaultReadConcern sehingga transaksi apa pun yang dimulai melalui // sesi akan memiliki read concern majority. // Opsi DefaultReadPreference dan DefaultWriteConcern tidak ditentukan jadi mereka // akan diwarisi dari klien dan diatur ke primary dan majority, masing-masing. opts := options.Session().SetDefaultReadConcern(readconcern.Majority()) sess, err := client.StartSession(opts) if err != nil { fmt.Println("mulai sesi gagal!") log.Fatal(err) return } defer func() { sess.EndSession(context.TODO()) fmt.Println("akhiri sesi!") }() fmt.Println("mulai sesi berhasil!") txnOpts := options.Transaction() result, err := sess.WithTransaction( context.TODO(), func(sessCtx mongo.SessionContext) (interface{}, error) { collection := client.Database("baz").Collection("qux") res, err := collection.InsertOne(context.Background(), bson.M{"hello": "world"}) if err != nil { fmt.Println("hasil sisipan gagal!") log.Fatal(err) return nil, err } id := res.InsertedID fmt.Println("Id: ", id) fmt.Printf("hasil sisipan: %v\n", res) result := bson.M{} filter := bson.D{{"_id", res.InsertedID}} if err := collection.FindOne(context.Background(), filter).Decode(&result); err != nil { fmt.Println("temukan gagal!") log.Fatal(err) return nil, err } return result, err }, txnOpts) if err == nil { fmt.Printf("hasil: %v\n", result) } }