程序代码连接MongoDB

程序代码连接MongoDB

相关链接

MongoDB Drivers

Connection String URI Format

Node.js 连接示例

相关链接

项目初始化

mkdir node-mongodb-demo
cd node-mongodb-demo
npm init

安装驱动包以及工具包

npm install mongodb node-uuid sprintf-js –save

获取云数据库 MongoDB 连接信息

请查看 MongoDB 连接信息七要素获取方法

Node.js Demo Code
‘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;
        }
        // 取得Collecton句柄
        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);
                //关闭Client,释放资源
                db.close();
            });
        });
    });
});

PHP 连接示例

相关链接

Mongodb php driver

安装驱动包以及工具包
$ pecl install mongodb
$ echo “extension=mongodb.so” >> `php –ini | grep “Loaded Configuration” | sed -e “s|.*:\s*||”`
$ composer require “mongodb/mongodb=^1.0.0”

获取云数据库MongoDB的连接信息

请查看 MongoDB 连接信息七要素获取方法

PHP Demo 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 连接示例

相关链接

官方Quick Start

Jar包下载

获取云数据库 MongoDB 连接信息

请查看 MongoDB 连接信息七要素获取方法

Java Demo Code

Maven配置
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.0.4</version>
</dependency>
</dependencies>
Java Code
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初始化
        //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 {
            // 取得Collecton句柄
            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,释放资源
            client.close();
        }
        return ;
    }
}

Python 连接示例

相关链接

pymongo下载地址

官方文档

安装pymongo

pip install pymongo

获取云数据库MongoDB连接信息

请查看 MongoDB 连接信息七要素获取方法

import uuid
from pymongo import MongoClient
#两地址
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)
#授权. 这里的user基于admin数据库授权
client.admin.authenticate(username, password)
#使用test数据库的collection:testColl做例子, 插入doc, 然后根据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
 来源:https://help.aliyun.com/document_detail/44630.html?spm=5176.doc54312.6.564.T8kFkL

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据