全部产品
Search
文档中心

:Menghubungkan ke instance mandiri menggunakan kode program

更新时间:Nov 09, 2025

ApsaraDB for MongoDB sepenuhnya kompatibel dengan protokol MongoDB. Topik ini menjelaskan contoh kode untuk menghubungkan ke instance mandiri dalam berbagai bahasa pemrograman.

Prasyarat

Node.js

Untuk informasi lebih lanjut tentang driver Node.js untuk MongoDB, lihat MongoDB Node.js Driver.

  1. Jalankan perintah berikut di klien untuk menginisialisasi proyek:

    mkdir node-mongodb-demo
    cd node-mongodb-demo
    npm init
  2. Jalankan perintah berikut untuk menginstal paket driver dan toolkit:

    npm install mongodb node-uuid sprintf-js
  3. Peroleh informasi koneksi dari instance mandiri.

  4. 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.

  1. 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"
  2. Peroleh informasi koneksi dari instance mandiri.

  3. 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:

  1. Peroleh informasi koneksi dari instance mandiri.

  2. 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.

  1. Instal PyMongo.

    pip3 install pymongo
  2. Peroleh informasi koneksi dari instance mandiri.

  3. 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.

  1. Jalankan perintah berikut untuk menginstal paket driver:

    Install-Package mongocsharpdriver
  2. Peroleh informasi koneksi dari instance mandiri.

  3. 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.

  1. Instal paket driver berikut:

    go get go.mongodb.org/mongo-driver
  2. Peroleh informasi koneksi dari instance mandiri.

  3. 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)
        }
    }

FAQ

Bagaimana cara menyelesaikan masalah kesalahan saat saya menghubungkan ke instance menggunakan kode program?

Anda dapat menyelesaikan masalah kesalahan dari aspek-aspek berikut saat menghubungkan ke instance menggunakan kode program:

  • Konektivitas Jaringan. Anda dapat menggunakan mongo shell untuk menguji konektivitas jaringan ke instance. Untuk informasi lebih lanjut, lihat Menghubungkan ke Instance Mandiri Menggunakan mongo shell.

  • Masalah kode. Setelah memastikan koneksi lancar, Anda dapat memeriksa apakah ada masalah dalam kode Anda dan konfigurasi lingkungan runtime.