你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Node.js 和 Azure Cosmos DB 的用于 MongoDB 的 API 生成应用
适用对象: MongoDB
此示例说明如何使用 Node.js 和 Azure Cosmos DB 的用于 MongoDB 的 API 生成控制台应用。
若要使用此示例,必须:
创建应用
创建 app.js 文件,并复制粘贴以下代码。
var MongoClient = require('mongodb').MongoClient; var assert = require('assert'); var ObjectId = require('mongodb').ObjectID; var url = 'mongodb://<username>:<password>@<endpoint>.documents.azure.com:10255/?ssl=true'; var insertDocument = function(db, callback) { db.collection('families').insertOne( { "id": "AndersenFamily", "lastName": "Andersen", "parents": [ { "firstName": "Thomas" }, { "firstName": "Mary Kay" } ], "children": [ { "firstName": "John", "gender": "male", "grade": 7 } ], "pets": [ { "givenName": "Fluffy" } ], "address": { "country": "USA", "state": "WA", "city": "Seattle" } }, function(err, result) { assert.equal(err, null); console.log("Inserted a document into the families collection."); callback(); }); }; var findFamilies = function(db, callback) { var cursor =db.collection('families').find( ); cursor.each(function(err, doc) { assert.equal(err, null); if (doc != null) { console.dir(doc); } else { callback(); } }); }; var updateFamilies = function(db, callback) { db.collection('families').updateOne( { "lastName" : "Andersen" }, { $set: { "pets": [ { "givenName": "Fluffy" }, { "givenName": "Rocky"} ] }, $currentDate: { "lastModified": true } }, function(err, results) { console.log(results); callback(); }); }; var removeFamilies = function(db, callback) { db.collection('families').deleteMany( { "lastName": "Andersen" }, function(err, results) { console.log(results); callback(); } ); }; MongoClient.connect(url, function(err, client) { assert.equal(null, err); var db = client.db('familiesdb'); insertDocument(db, function() { findFamilies(db, function() { updateFamilies(db, function() { removeFamilies(db, function() { client.close(); }); }); }); }); });
可选:如果使用的是 MongoDB Node.js 2.2 驱动程序,请替换下面的代码片段:
原始:
MongoClient.connect(url, function(err, client) { assert.equal(null, err); var db = client.db('familiesdb'); insertDocument(db, function() { findFamilies(db, function() { updateFamilies(db, function() { removeFamilies(db, function() { client.close(); }); }); }); }); });
应替换为:
MongoClient.connect(url, function(err, db) { assert.equal(null, err); insertDocument(db, function() { findFamilies(db, function() { updateFamilies(db, function() { removeFamilies(db, function() { db.close(); }); }); }); }); });
按照帐户设置修改 app.js 文件中的以下变量(了解如何查找连接字符串):
重要
MongoDB Node.js 3.0 驱动程序需要在 Azure Cosmos DB 密码中对特殊字符进行编码。 请务必将“=”字符编码为 %3D
示例:密码 jm1HbNdLg5zxEuyD86ajvINRFrFCUX0bIWP15ATK3BvSv== 编码为 jm1HbNdLg5zxEuyD86ajvINRFrFCUX0bIWP15ATK3BvSv%3D%3D
MongoDB Node.js 2.2 驱动程序无需在 Azure Cosmos DB 密码中对特殊字符进行编码。
var url = 'mongodb://<endpoint>:<password>@<endpoint>.documents.azure.com:10255/?ssl=true';
打开偏爱的终端,运行 npm install mongodb --save,并使用 node app.js 运行应用程序
后续步骤
- 了解如何将 Studio 3T 与 Azure Cosmos DB 的用于 MongoDB 的 API 配合使用。
- 了解如何将 Robo 3T 与 Azure Cosmos DB 的用于 MongoDB 的 API 配合使用。
- 通过 Azure Cosmos DB 的用于 MongoDB 的 API 来浏览 MongoDB 示例。
- 正在尝试为迁移到 Azure Cosmos DB 进行容量计划? 可以使用有关现有数据库群集的信息进行容量规划。
- 如果只知道现有数据库群集中的 vCore 和服务器数量,请阅读使用 vCore 或 vCPU 估算请求单位
- 若知道当前数据库工作负载的典型请求速率,请阅读使用 Azure Cosmos DB 容量计划工具估算请求单位