日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過程序代碼連接MongoDB副本集實(shí)例

更新時(shí)間:

云數(shù)據(jù)庫MongoDB版完全兼容MongoDB協(xié)議,本文介紹如何使用不同語言的程序代碼連接MongoDB副本集實(shí)例。

前提條件

請(qǐng)根據(jù)您使用的語言下載并安裝官方驅(qū)動(dòng)程序,更多信息,請(qǐng)參見MongoDB Drivers

注意事項(xiàng)

如果副本集實(shí)例數(shù)據(jù)庫賬號(hào)的密碼中包含特殊字符!@#$%^&*()_+=,您需要在連接串中對(duì)特殊字符進(jìn)行轉(zhuǎn)義處理,對(duì)應(yīng)如下:

特殊字符

轉(zhuǎn)義字符

!

%21

@

%40

#

%23

$

%24

%

%25

^

%5e

&

%26

*

%2a

(

%28

)

%29

_

%5f

+

%2b

=

%3d

示例:密碼為ab@#c時(shí),在連接串中對(duì)特殊字符進(jìn)行轉(zhuǎn)義處理,密碼對(duì)應(yīng)為ab%40%23c

Node.js連接示例

Node.js驅(qū)動(dòng)相關(guān)信息,請(qǐng)參見MongoDB Node.js Driver

  1. 在客戶端執(zhí)行如下命令,進(jìn)行項(xiàng)目初始化。

    mkdir node-mongodb-demo
    cd node-mongodb-demo
    npm init -y
  2. 執(zhí)行如下命令,安裝驅(qū)動(dòng)包。

    npm install mongodb
  3. 獲取云數(shù)據(jù)庫MongoDB副本集實(shí)例連接信息,如何獲取,請(qǐng)參見副本集實(shí)例連接說明

  4. 將如下示例代碼保存為Node.js。

    const MongoClient = require('mongodb').MongoClient;
    
    // 庫名稱和集合名稱。
    const demoDb = "test";
    const demoColl = "testColl";
    
    // 建議使用副本集高可用地址,確保高可用。
    // 確保執(zhí)行代碼的服務(wù)器和MongoDB實(shí)例網(wǎng)絡(luò)是連通的。
    // 如果密碼中包含特殊字符,請(qǐng)進(jìn)行轉(zhuǎn)義處理。
    const url = "mongodb://root:****@dds-2ze043****.mongodb.rds.aliyuncs.com:3717,dds-2ze043****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63****"
    
    console.info("url:", url);
    
    // 獲取mongoClient。
    const client = new MongoClient(url);
    
    async function run() {
        try {
            //連接實(shí)例。
            await client.connect();
    
            //取得數(shù)據(jù)庫句柄。
            const database = client.db(demoDb);
    
            //取得集合句柄。
            const collection = database.collection(demoColl);
    
            //組裝記錄。
            const demoName = "Node For Demo";
            const doc = { "DEMO": demoName, "MESG": "Hello AliCloudDB For MongoDB" };
            console.info("ready insert document: ", doc);
    
            //插入一條記錄。
            const result = await collection.insertOne(doc);
            console.log(
                `A document was inserted with the _id: ${result.insertedId}`,
            );
    
            //讀取數(shù)據(jù)。
            const filter = { "DEMO": demoName };
            const findResult = await collection.find(filter);
            await findResult.forEach(console.dir);
          } finally {
              //關(guān)閉連接。
              await client.close();
          }
    }
    run().catch(console.dir);
                            
  5. 運(yùn)行node Node.js

PHP連接示例

PHP驅(qū)動(dòng)相關(guān)信息,請(qǐng)參見MongoDB PHP Driver

  1. 執(zhí)行如下命令,安裝驅(qū)動(dòng)包。

    $ pecl install mongodb
    
    # 獲取PHPini文件路徑。
    $ php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"
    
    # 在ini文件中添加如下信息,如果已經(jīng)有則不用添加。
    $ extension=mongodb.so
    
    # 創(chuàng)建并進(jìn)入工程目錄。
    $ mkdir php-demo
    $ cd php-demo
    
    # 使用composer安裝mongodb依賴。若未安裝composer,可通過https://getcomposer.org/download/路徑下載。
    $ composer require mongodb/mongodb
  2. 獲取云數(shù)據(jù)庫MongoDB副本集實(shí)例連接信息,如何獲取,請(qǐng)參見副本集實(shí)例連接說明

  3. 將如下示例代碼保存為main.php。

    <?php
    
    require 'vendor/autoload.php'; // include Composer goodies
    
    
    // 建議使用副本集高可用地址,確保高可用。
    // 確保執(zhí)行代碼的服務(wù)器和MongoDB實(shí)例網(wǎng)絡(luò)是連通的。
    // 如果密碼中包含特殊字符,請(qǐng)進(jìn)行轉(zhuǎn)義處理。
    $replicaset_url = 'mongodb://root:****@dds-2ze043****.mongodb.rds.aliyuncs.com:3717,dds-2ze043****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63****';
    $test_db = 'test';
    $test_coll = 'testColl';
    
    // 創(chuàng)建mongoclient。
    $client = new MongoDB\Client($replicaset_url);
    $collection = $client->$test_db->$test_coll;
    
    // 插入一條記錄。
    $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";
    }
    
    ?>
  4. 運(yùn)行php -f main.php

Java連接示例

Java驅(qū)動(dòng)相關(guān)信息,請(qǐng)參見MongoDB Java Driver

本示例測(cè)試的環(huán)境為IDE(IntelliJ IDEAEclipse IDE)。IDE環(huán)境下連接副本集實(shí)例,JDK需為JDK 8及以上版本。

  1. 獲取云數(shù)據(jù)庫MongoDB副本集實(shí)例連接信息,如何獲取,請(qǐng)參見副本集實(shí)例連接說明

  2. 添加Maven依賴。

    <dependencies>
            <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongodb-driver-sync</artifactId>
                <version>4.8.0</version>
            </dependency>
        </dependencies>
  3. Java示例代碼。

    // JDK 8及以上。
    
    import static com.mongodb.client.model.Filters.eq;
    import org.bson.Document;
    import com.mongodb.MongoException;
    import com.mongodb.client.MongoClient;
    import com.mongodb.client.MongoClients;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.client.result.InsertOneResult;
    
    public class Main {
        public static void main( String[] args ) {
            // 建議使用副本集高可用地址,確保高可用。
            // 確保執(zhí)行代碼的服務(wù)器和MongoDB實(shí)例網(wǎng)絡(luò)是連通的。
            // 如果密碼中包含特殊字符,請(qǐng)進(jìn)行轉(zhuǎn)義處理。
            String uri = "mongodb://root:****@dds-2ze043****.mongodb.rds.aliyuncs.com:3717,dds-2ze043****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63****";
            String demoDb = "test";
            String demoColl = "testColl";
    
            try (MongoClient mongoClient = MongoClients.create(uri)) {
                MongoDatabase database = mongoClient.getDatabase(demoDb);
                MongoCollection<Document> collection = database.getCollection(demoColl);
    
                // 寫入一條記錄。
                try {
                    InsertOneResult result = collection.insertOne(new Document()
                            .append("DEMO", "Java for Demo")
                            .append("MESG", "Hello AliCloudDB For MongoDB"));
                    System.out.println("Success! Inserted document id: " + result.getInsertedId());
                } catch (MongoException me) {
                    System.err.println("Unable to insert due to an error: " + me);
                }
    
                // 查詢第一條記錄。
                Document doc = collection.find(eq("DEMO", "Java for Demo")).first();
                System.out.println(doc.toJson());
    
                mongoClient.close();
            }
        }
    }
  4. IDE工具中單擊運(yùn)行。

Python連接示例

Python驅(qū)動(dòng)相關(guān)信息,請(qǐng)參見MongoDB Python Driver

本示例測(cè)試的環(huán)境為Python 3.9。

  1. 安裝pymongo。

    pip install pymongo
  2. 獲取云數(shù)據(jù)庫MongoDB副本集實(shí)例連接信息,如何獲取,請(qǐng)參見副本集實(shí)例連接說明

  3. 將如下示例代碼保存為Main.py。

    # 代碼運(yùn)行環(huán)境為python3.9。
    
    from pymongo import MongoClient
    
    # 建議使用副本集高可用地址,確保高可用。
    # 確保執(zhí)行代碼的服務(wù)器和MongoDB實(shí)例網(wǎng)絡(luò)是連通的。
    # 如果密碼中包含特殊字符,請(qǐng)進(jìn)行轉(zhuǎn)義處理。
    REPLICASET_URL = 'mongodb://root:****@dds-2ze043****.mongodb.rds.aliyuncs.com:3717,dds-2ze043****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63****'
    testDb = 'test'
    testColl = 'testColl'
    
    # 獲取mongoclient。
    client = MongoClient(REPLICASET_URL)
    
    
    # 插入一條記錄。
    doc = dict(DEMO="Python for demo", MESG="Hello ApsaraDB For MongoDB")
    doc_id = client.testDb.testColl.insert_one(doc).inserted_id
    print ('doc_id:', doc_id)
    
    
    # 查詢記錄。
    for d in client.testDb.testColl.find(dict(DEMO="Python for demo")):
        print ('find documents:', d)
    
    client.close()
  4. 運(yùn)行python3.9 Main.py

C#連接示例

C#驅(qū)動(dòng)相關(guān)信息,請(qǐng)參見MongoDB C# Driver

本示例測(cè)試的環(huán)境為IDE(Visual Studio)。

  1. Visual Studio中使用NuGet包管理工具(路徑:項(xiàng)目 > 管理NuGet)下載如下包。

    MongoDB.Driver
  2. 獲取云數(shù)據(jù)庫MongoDB副本集實(shí)例連接信息,如何獲取,請(qǐng)參見副本集實(shí)例連接說明

  3. C#示例代碼。

    using MongoDB.Bson;
    using MongoDB.Driver;
    using System;
    using System.Collections.Generic;
    
    namespace Aliyun
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 建議使用副本集高可用地址,確保高可用。
                // 確保執(zhí)行腳本的機(jī)器和實(shí)例網(wǎng)絡(luò)是通常的。
                // 如密碼包含特殊字符,則需要轉(zhuǎn)義。
                const string replicaSetUrl = "mongodb://root:****@dds-2ze043****.mongodb.rds.aliyuncs.com:3717,dds-2ze043****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63****";
                const string testDb = "test";
                const string testColl = "testColl";
    
                try
                {
    
                    // 建立連接獲取client。
                    MongoClient client = new MongoClient(replicaSetUrl);
    
    
                    // 獲取集合。
                    var database = client.GetDatabase(testDb);
                    var collection = database.GetCollection<BsonDocument>(testColl);
    
                    // 插入一條記錄。
                    var document = new BsonDocument
                                {
                                    { "name", "Csharp for Mongodb" },
                                    { "desc", "Hello ApsaraDB For MongoDB" }
                                };
                    collection.InsertOne(document);
                    Console.WriteLine("Insert done\n");
    
                    // 查詢記錄。
                    var cursor = collection.Find(new BsonDocument{ { "name", "Csharp for Mongodb" } }).ToCursor();
                    foreach (var doc in cursor.ToEnumerable())
                    {
                        Console.WriteLine(doc);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("連接異常:" + e.Message);
    
                }
            }
        }
    }
  4. IDE工具中單擊運(yùn)行。

Go連接示例

Go驅(qū)動(dòng)相關(guān)信息,請(qǐng)參見MongoDB Go Driver

  1. 執(zhí)行如下命令,安裝驅(qū)動(dòng)包。

    go get go.mongodb.org/mongo-driver
  2. 獲取云數(shù)據(jù)庫MongoDB副本集實(shí)例連接信息,如何獲取,請(qǐng)參見副本集實(shí)例連接說明

  3. 將如下示例代碼保存為main.go。

    package main
    
    import (
        "context"
        "fmt"
        "go.mongodb.org/mongo-driver/bson"
        "go.mongodb.org/mongo-driver/mongo"
        "go.mongodb.org/mongo-driver/mongo/options"
        "log"
    )
    
    func main() {
        // 建議使用副本集高可用地址,確保高可用。
        // 確保執(zhí)行代碼的服務(wù)器和MongoDB實(shí)例網(wǎng)絡(luò)是連通的。
        // 如果密碼中包含特殊字符,請(qǐng)進(jìn)行轉(zhuǎn)義處理。
        replicaSetUrl := "mongodb://root:****@dds-2ze043****.mongodb.rds.aliyuncs.com:3717,dds-2ze043****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-63****"
        testDb := "test"
        testColl := "testColl"
    
    
        clientOpts := options.Client().ApplyURI(replicaSetUrl)
    
        // 連接Server,獲取client。
        client, err := mongo.Connect(context.TODO(), clientOpts)
        if err != nil {
            fmt.Println("connect failed!")
            log.Fatal(err)
            return
        }
        fmt.Println("connect successful!")
    
        // 結(jié)束時(shí)斷開連接。
        defer func() {
            if err = client.Disconnect(context.TODO()); err != nil {
                fmt.Println("disconnect failed!")
                log.Fatal(err)
            }
            fmt.Println("disconnect successful!")
        }()
    
        // 向Server發(fā)送Ping命令,驗(yàn)證連接成功。
        if err = client.Ping(context.TODO(), nil); err != nil {
            fmt.Println("ping failed!")
            log.Fatal(err)
            return
        }
        fmt.Println("ping successful!")
    
        // 插入一條記錄。
        collection := client.Database(testDb).Collection(testColl)
        res, err := collection.InsertOne(context.Background(), bson.M{"hello": "world"})
        if err != nil {
            fmt.Println("insert result failed!")
            log.Fatal(err)
            return
        }
        id := res.InsertedID
        fmt.Println("Id: ", id)
        fmt.Printf("insert result: %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("find failed!")
            log.Fatal(err)
            return
        }
        fmt.Printf("result: %v\n", result)
    }
                            
  4. 運(yùn)行go run main.go

常見問題

如何排查程序代碼連接實(shí)例時(shí)報(bào)錯(cuò)?

通過程序代碼連接實(shí)例時(shí)報(bào)錯(cuò),您可以從以下兩個(gè)方面排查:

  • 網(wǎng)絡(luò)互通。您可以通過MongoShell連接實(shí)例,測(cè)試網(wǎng)絡(luò)連通性。具體操作,請(qǐng)參見通過Mongo Shell連接MongoDB副本集實(shí)例

  • 代碼問題。在確認(rèn)網(wǎng)絡(luò)通暢后,請(qǐng)檢查代碼以及運(yùn)行環(huán)境配置是否存在問題。