云数据库MongoDB版完全兼容MongoDB协议,本文介绍各类程序连接数据库的相关示例代码。
相关链接
- MongoDB Drivers
- Connection String URI Format
说明 本文连接demo仅适用于阿里云提供的MongoDB副本集实例的内网连接地址。
- 获取分片集群实例的连接地址,无需手动拼接,详情请参见分片集群实例连接说明。
说明 连接分片集群实例时,无需指定replicaSet参数。
Node.js 连接示例
- 项目初始化。 123
mkdir node-mongodb-demo
cd node-mongodb-demo
npm init
- 安装驱动包以及工具包。 1
npm install mongodb node-uuid sprintf-js –save
- 获取云数据库 MongoDB 连接信息。
- Node.js Demo Code。12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
'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
- 执行如下命令,安装驱动包以及工具包。123
$ pecl install mongodb
$ echo
"extension=mongodb.so"
>> `php --ini | grep
"Loaded Configuration"
| sed -e
"s|.*:\s*||"
`
$ composer require "mongodb/mongodb=^
1.0
.
0
- 获取云数据库MongoDB的连接信息。
- PHP Demo Code。1234567891011121314151617181920212223
<?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_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 连接信息。
- Java Demo Code。
- 执行如下命令,配置Maven。1234567
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>
3.0
.
4
</version>
</dependency>
</dependencies>
- Java Code。12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
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
;
}
}
- 执行如下命令,配置Maven。
Python 连接示例
相关链接:
- 执行命令
pip install pymongo
,安装pymongo。 - 获取云数据库MongoDB连接信息。
- Python Demo Code。 1234567891011121314151617181920
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
C# 连接示例
相关链接:MongoDB C# Driver。
- 安装如下驱动包。 1
mongocsharpdriver.dll
- 获取云数据库 MongoDB 连接信息。
- C# Demo Code。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
using MongoDB.Driver;
using System;
using System.Collections.Generic;
namespace Aliyun
{
class
Program
{
static
void
Main(string[] args)
{
//Mongo 实例信息
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"
;
const
string userName =
"root"
;
const
string passwd =
"********"
;
try
{
Console.WriteLine(
"开始连接......."
);
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;
//设置副本集名称
settings.ReplicaSetName = replicaSetName;
//设置超时时间为3秒
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 =
"女"
;
//插入数据user
collection.Insert(user);
//获取一条数据
User result = collection.FindOne();
Console.WriteLine(
"id:"
+ result.id +
" name:"
+ result.name +
" sex:"
+result.sex);
Console.WriteLine(
"连接成功........."
);
}
catch
(Exception e)
{
Console.WriteLine(
"连接异常:"
+e.Message);
}
}
}
class
User
{
public
string id { set; get; }
public
string name { set; get; }
public
string sex { set; get; }
}
}