Getting Started
接下来的教程使用 MongoDB Node.js 驱动 来连接一个免费的 Atlas 集群, 然后执行插入和查询操作.
想要使用 , 请先创建你的账户并登陆到 Atlas.
2.创建一个 Atlas Group.
为你的 group 取个名字.
你可以通过 gourp 来管理相关联的 MongoDB 实例. 要创建另外的 Atlas group, 请点击左上角的用户名然后选择 My Groups. 点击 Add Group 按钮即可.
3.创建一个集群.
在 Atlas 中部署一个 MongoDB 实例或者 “clusters”, 可以是一个 replica set 或者 .
要创建集群, 进入 Clusters 界面并点击 Add New Cluster 或者 Build a New Cluster 按钮.
输入 Cluster Name.
找到 M0 级免费教学实例, 并点击对应的 Select 按钮.
输入 Username (用户名) 和 Password (密码).
Atlas 只允许 group 入口白名单中的客户端连接集群. 在白名单中添加一个入口:
- 在 Clusters 页面点击 Security 选项.
- 点击 IP Whitelist, 然后添加 IP Address. 你可以在 Whitelist Entry 中手动输入 IP 地址, 也可以点击 Add Current IP Address 按钮.
- 点击 Confirm 然后等待 Atlas 更新防火墙.
5.下载驱动客户端.
推荐通过 初始化一个项目的配置文件, 然后用 npm
安装 :
需要更多信息, 请查看 Node.js 驱动快速开始文档.
6.获取 URI 连接串.
通过 MongoDB Atlas Clusters 页面:
- 点击 Connect 按钮来查看 URI 连接字符串.
- 复制连接字符串.
- 将连接串中的
<PASSWORD>
替换成之前创建时设置的密码, 并且替换<DATABASE>
为你要连接/简历的数据库名. 下文中使用test
数据库. - 复制修改好的 URI.
使用上一步获取的 URI 字符串, 连接 Atlas 集群:
var MongoClient = require('mongodb').MongoClient;
var uri = "mongodb://user123:p455w0rd@gettingstarted-shard-00-00-hyjsm.mongodb.net:27017,gettingstarted-shard-00-01-hyjsm.mongodb.net:27017,gettingstarted-shard-00-02-hyjsm.mongodb.net:27017/test?ssl=true&replicaSet=GettingStarted-shard-0&authSource=admin";
MongoClient.connect(uri, function(err, db) {
// Paste the following examples here
db.close();
});
文档 & 集合
MongoDB 在 collections 中使用 (二进制格式的 JSON) 来存储数据. MongoDB 中一个数据库对应多个集合, 一个集合对应多个文档.
插入文档
可以用来插入 多个 文档. 传递一个包含文档的给这个方法.
如下代码插入了新的文档到 inventory
集合中:
db.collection('inventory').insertMany([
// MongoDB adds the _id field with an ObjectId if _id is not present
{ item: "journal", qty: 25, status: "A",
size: { h: 14, w: 21, uom: "cm" }, tags: [ "blank", "red" ] },
size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },
{ item: "paper", qty: 100, status: "D",
size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank", "plain" ] },
{ item: "planner", qty: 75, status: "D",
size: { h: 22.85, w: 30, uom: "cm" }, tags: [ "blank", "red" ] },
{ item: "postcard", qty: 45, status: "A",
size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }
])
.then(function(result) {
// process result
})
返回一个包含被插入文档的 _id
的数据. 可以查看这里的例子.
想要更多的文档和例子, 可以参见章节的插入.
要查询 (select) 所有集合中的文档, 给 方法传一个空的文档作为查询过滤:
要查询匹配指定条件的文档, 可以使用 方法, 并传递 <字段>:<值>
格式的过滤 条件. 下例为查询 inventory
集合中所有的 status
为 "D"
的文档:
var cursor = db.collection('inventory').find({ status: "D" });
相等的匹配在匹配整个嵌套结构的文档时需要 确切 地指定 , 包括字段的顺序. 举个栗子, 下列语句可以查询所有 size
字段等于 {h:14,w:21,uom:"cm"}
的文档:
var cursor = db.collection('inventory').find({
size: { h: 14, w: 21, uom: "cm" }
});
查询所有嵌套在 size
字段下的 uom
字段等于 "in"
的文档:
查询 tags
是一个数组并且其中包含 "red"
的所有文档:
var cursor = db.collection('inventory').find({
tags: "red"
});
查询 tags
字段的值为一个包含 "red"
和 "blank"
并且顺序确定的数组的所有文档:
var cursor = db.collection('inventory').find({
});
更多信息以及查询例子, 参见章节的查询.
关于更新和删除文档, 参见和Delete Documents.
下一步
当你阅读完 Getting Started 概览之后, 你可以通过下列课程和主题获得更多帮助:
想学习更多关于 MongoDB 查询语句和其他 MongoDB 基础知识, 可以注册 M001: MongoDB Basics 课程.