通过程序代码连接MongoDB实例
更新时间:2021-03-11
云数据库MongoDB版完全兼容MongoDB协议,本文介绍各类程序连接数据库的相关示例。
准备工作
- 根据您的实例类型获取云数据库MongoDB连接地址。
- 根据您使用的语言下载并安装官方驱动程序。更多信息,请参见MongoDB Drivers。
说明:
- 本文连接Demo仅适用于百度云提供的MongoDB内网连接地址。
- 连接分片集群实例时,无需指定下列Demo中的replicaSet相关参数。
Node.js 连接示例
相关链接:MongoDB Node.js Driver。
1.项目初始化
Plain Text
1mkdir node-mongodb-demo
2cd node-mongodb-demo
3npm init
2.安装驱动包以及工具包。
Plain Text
1npm install mongodb node-uuid sprintf-js
3.根据您的实例类型获取云数据库MongoDB连接信息。
4.Node.js Demo Code。
Plain Text
1var host1 = "*********.mongodb.gz.baidubce.com";
2var port1 = 27017;
3var host2 = "*********.mongodb.gz.baidubce.com";
4var port2 = 27017;
5var username = "root";
6var password = "******";
7var replSetName = "rep-******";
8var adminDb = 'admin'
9var demoDb = "test";
10var demoColl = "testColl";
11// 官方建议使用的方案
12var url = sprintf("mongodb://%s:%s@%s:%d,%s:%d/%s?replicaSet=%s", username, password, host1, port1, host2, port2, adminDb, replSetName);
13console.info("url:", url);
14//获取mongoClient
15mongoClient.connect(url, {useUnifiedTopology: true, useNewUrlParser: true}, function (err, db) {
16 if (err) {
17 console.error("connect err:", err);
18 return 1;
19 }
20 //取得Collecton句柄
21 var collection = db.db(demoDb).collection(demoColl);
22 var demoName = "NODE:" + uuid.v1();
23 var doc = { "DEMO": demoName, "MESG": "Hello BaiduCoudDB For MongoDB"};
24 console.info("ready insert document: ", doc);
25 // 插入数据
26 collection.insertOne(doc, function (err, data) {
27 if (err) {
28 console.error("insert err:", err);
29 return 1;
30 }
31 console.info("insert result:", data["result"]);
32 // 读取数据
33 var filter = { "DEMO": demoName };
34 collection.find(filter).toArray(function (err, items) {
35 if (err) {
36 console.error("find err:", err);
37 return 1;
38 }
39 console.info("find document: ", items);
40 //关闭Client,释放资源
41 db.close();
42 });
43 });
44});
PHP 连接示例
相关链接:MongoDB PHP Driver。
1.安装驱动包以及工具包。
Plain Text
1$ pecl install mongodb
2$ echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
3$ composer require "mongodb/mongodb=^1.0.0"
2.获取云数据库 MongoDB 连接信息。
3.PHP Demo Code。
Plain Text
1<?php
2require 'vendor/autoload.php'; // include Composer goodies
3# 实例信息
4$demo_seed1 = '*********.mongodb.gz.baidubce.com:27017';
5$demo_seed2 = '*********.mongodb.gz.baidubce.com:27017';
6$demo_replname = "rep-******";
7$demo_user = 'root';
8$demo_password = '*********';
9$demo_db = 'admin';
10# 根据实例信息构造mongodb connection string
11# mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
12$demo_uri = 'mongodb://' . $demo_user . ':' . $demo_password . '@' .
13 $demo_seed1 . ',' . $demo_seed2 . '/' . $demo_db . '?replicaSet=' . $demo_replname;
14echo "demo_uri = '$demo_uri'", "\n";
15$client = new MongoDB\Client($demo_uri);
16$collection = $client->testDb->testColl;
17$result = $collection->insertOne(['name' => 'DocDB for Mongodb', 'desc' => 'Hello, Mongodb']);
18echo "Inserted with Object ID '{$result->getInsertedId()}'", "\n";
19$result = $collection->find(['name' => 'DocDB for Mongodb']);
20foreach ($result as $entry) {
21 echo $entry->_id, ': ', $entry->name, "\n";
22}
23?>
Java 连接示例
相关链接:下载Jar包。
1.获取云数据库 MongoDB 连接信息。
2.Java Demo Code。
- Maven配置。
Plain Text
1<dependencies>
2 <dependency>
3 <groupId>org.mongodb</groupId>
4 <artifactId>mongo-java-driver</artifactId>
5 <version>3.6.4</version>
6 </dependency>
7</dependencies>
- Java Code。
Plain Text
1import java.util.ArrayList;
2import java.util.List;
3import java.util.UUID;
4
5import com.mongodb.*;
6import com.mongodb.client.MongoCollection;
7import com.mongodb.client.MongoCursor;
8import com.mongodb.client.MongoDatabase;
9import org.bson.BsonDocument;
10import org.bson.BsonString;
11import org.bson.Document;
12
13public class App {
14 public static ServerAddress seed1 = new ServerAddress("*********.mongodb.gz.baidubce.com",
15 27017);
16 public static ServerAddress seed2 = new ServerAddress("*********.mongodb.gz.baidubce.com",
17 27017);
18 public static String username = "root";
19 public static String password = "*********";
20 public static String ReplSetName = "rep-******";
21 public static String DEFAULT_DB = "admin";
22 public static String DEMO_DB = "test";
23 public static String DEMO_COLL = "testColl";
24 public static MongoClient createMongoDBClient() {
25 // 构建Seed列表
26 List<ServerAddress> seedList = new ArrayList<ServerAddress>();
27 seedList.add(seed1);
28 seedList.add(seed2);
29 // 构建鉴权信息
30 List<MongoCredential> credentials = new ArrayList<MongoCredential>();
31 credentials.add(MongoCredential.createScramSha1Credential(username, DEFAULT_DB,
32 password.toCharArray()));
33 // 构建操作选项,requiredReplicaSetName属性外的选项根据自己的实际需求配置,默认参数满足大多数场景
34 MongoClientOptions options = MongoClientOptions.builder().requiredReplicaSetName(ReplSetName)
35 .socketTimeout(2000).connectionsPerHost(1).build();
36 return new MongoClient(seedList, credentials, options);
37 }
38 public static MongoClient createMongoDBClientWithURI() {
39 // 另一种通过URI初始化
40 // mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
41 MongoClientURI connectionString = new MongoClientURI("mongodb://" + username + ":" + password + "@"
42 + seed1 + "," + seed2 + "/" + DEFAULT_DB + "?replicaSet=" + ReplSetName);
43 return new MongoClient(connectionString);
44 }
45 public static void main(String args[]) {
46 MongoClient client = createMongoDBClient();
47 // or
48 // MongoClient client = createMongoDBClientWithURI();
49 try {
50 // 取得Collecton句柄
51 MongoDatabase database = client.getDatabase(DEMO_DB);
52 MongoCollection<Document> collection = database.getCollection(DEMO_COLL);
53 // 插入数据
54 Document doc = new Document();
55 String demoname = "JAVA:" + UUID.randomUUID();
56 doc.append("DEMO", demoname);
57 doc.append("MESG", "Hello DocDB For MongoDB");
58 collection.insertOne(doc);
59 System.out.println("insert document: " + doc);
60 // 读取数据
61 BsonDocument filter = new BsonDocument();
62 filter.append("DEMO", new BsonString(demoname));
63 MongoCursor<Document> cursor = collection.find(filter).iterator();
64 while (cursor.hasNext()) {
65 System.out.println("find document: " + cursor.next());
66 }
67 } finally {
68 // 关闭Client,释放资源
69 client.close();
70 }
71 return;
72 }
73}
Python 连接示例
相关链接:pymongo下载地址。
1.安装pymongo。
Plain Text
1pip install pymongo
2.获取云数据库 MongoDB 连接信息。
3.Python Demo Code。
Plain Text
1import uuid
2from pymongo import MongoClient
3CONN_ADDR1 = '*********.mongodb.gz.baidubce.com:27017'
4CONN_ADDR2 = '*********.mongodb.gz.baidubce.com:27017'
5REPLICAT_SET = 'rep-******'
6username = 'root'
7password = '*********'
8client = MongoClient([CONN_ADDR1, CONN_ADDR2], replicaSet=REPLICAT_SET)
9client.admin.authenticate(username, password)
10demo_name = 'python-' + str(uuid.uuid1())
11print 'demo_name:', demo_name
12doc = dict(DEMO=demo_name, MESG="Hello DocDB For MongoDB")
13doc_id = client.test.testColl.insert(doc)
14print 'doc_id:', doc_id
15for d in client.test.testColl.find(dict(DEMO=demo_name)):
16 print 'find documents:', d
C# 连接示例
相关链接:MongoDB C# Driver。
1.安装如下驱动包。
Plain Text
1mongocsharpdriver.dll
2.获取云数据库 MongoDB 连接信息。
3.C# Demo Code。
Plain Text
1using MongoDB.Driver;
2using System;
3using System.Collections.Generic;
4
5namespace Baiduyun
6{
7 class Program
8 {
9 static void Main(string[] args)
10 {
11 //Mongo 实例信息
12 const string host1 = "*********.mongodb.gz.baidubce.com";
13 const int port1 = 27017;
14 const string host2 = "*********.mongodb.gz.baidubce.com";
15 const int port2 = 27017;
16 const string replicaSetName = "rep-******";
17 const string admin = "admin";
18 const string userName = "root";
19 const string passwd = "*********";
20
21 try
22 {
23 Console.WriteLine("开始连接.......");
24 MongoClientSettings settings = new MongoClientSettings();
25 List<MongoServerAddress> servers = new List<MongoServerAddress>();
26 servers.Add(new MongoServerAddress(host1, port1));
27 servers.Add(new MongoServerAddress(host2, port2));
28 settings.Servers = servers;
29 //设置副本集名称
30 settings.ReplicaSetName = replicaSetName;
31 //设置超时时间为3秒
32 settings.ConnectTimeout = new TimeSpan(0, 0, 0, 3, 0);
33 MongoCredential credentials = MongoCredential.CreateCredential(admin, userName, passwd);
34 settings.Credential = credentials;
35 MongoClient client = new MongoClient(settings);
36 var server = client.GetServer();
37 MongoDatabase database = server.GetDatabase("test");
38 var collection = database.GetCollection<User>("test_collection");
39 User user = new User();
40 user.id = "1";
41 user.name = "mongo_test";
42 user.sex = "女";
43 //插入数据user
44 collection.Insert(user);
45 //获取一条数据
46 User result = collection.FindOne();
47 Console.WriteLine("id:" + result.id + " name:" + result.name + " sex:"+result.sex);
48 Console.WriteLine("连接成功.........");
49 }
50 catch (Exception e)
51 {
52 Console.WriteLine("连接异常:"+e.Message);
53 }
54 }
55 }
56 class User
57 {
58 public string id { set; get; }
59 public string name { set; get; }
60 public string sex { set; get; }
61
62 }
63}
Go 连接示例
相关链接:MongoDB Go Driver。
1.安装如下驱动包。
Plain Text
1go get gopkg.in/mgo.v2
下载失败的话建议设置代理:
Plain Text
1git config --global --unset http.proxy
2git config --global --unset https.proxy
2.获取云数据库 MongoDB 连接信息。
3.Go Demo Code。
Plain Text
1package main
2import (
3"fmt"
4"log"
5"time"
6"gopkg.in/mgo.v2"
7"gopkg.in/mgo.v2/bson"
8)
9type Person struct {
10Name string
11Phone string
12}
13func main() {
14fmt.Println("hello world")
15dialInfo := &mgo.DialInfo{
16Addrs: []string{"*********.mongodb.gz.baidubce.com:27017", "*********.mongodb.gz.baidubce.com:27017"},
17Direct: false,
18Timeout: time.Second * 1,
19Database: "admin",
20Source: "admin",
21Username: "root",
22Password: "*********",
23}
24session, err := mgo.DialWithInfo(dialInfo)
25if err != nil {
26fmt.Printf("dial failed: %v",err)
27return
28}
29defer session.Close()
30
31session.SetMode(mgo.Monotonic, true)
32
33c := session.DB("test").C("test_collection")
34err = c.Insert(&Person{"Ale", "+55 53 8116 9639"},
35 &Person{"Cla", "+55 53 8402 8510"})
36if err != nil {
37 log.Fatal(err)
38}
39
40result := Person{}
41err = c.Find(bson.M{"name": "Ale"}).One(&result)
42if err != nil {
43 log.Fatal(err)
44}
45
46fmt.Println("Phone:", result.Phone)
47}