MongoDB入门教程:开发环境搭建以及Node.js和Java的读写访问
MongoDB是近年来关系型数据库和非关系型数据库之间非常流行的解决方案,采用分布式面向文档的设计思想,具有很强的扩展性,自由的表结构,支持丰富的查询命令和数据类型。如今,MongoDB 凭借灵活的数据存储方式,逐渐成为 IT 行业非常流行的非关系型数据库解决方案。
在做项目的过程中,笔者也尝试了从零开始学习MongoDB数据库的过程,所以我想通过文章的形式来分享一下我在学习过程中的一些经验。
第一步——MongboDB环境搭建
MongoDB支持的数据结构非常松散,是类似于json的bson格式。这种灵活的格式允许 MongoDB 存储更复杂的数据类型。 Mongo最大的特点就是它支持的查询语言(Query Language)非常强大。它的语法有点类似于面向对象的查询语言,因此可读性很强,几乎可以实现关系数据库中大部分类似单表查询的功能。 。
这一步代表了学习MongoDB的第一步:搭建环境。
从MongoDB官方网站下载安装包。
我将mongoDB安装在C盘MyApp目录下,安装完成后,bin文件夹下有几个可执行文件。将bin文件路径添加到Windows环境变量中。
使用以下命令行启动 MongoDB 服务器:
mongod --dbpath C:MyAppmongoDBjerryserverdb
请参阅以下打印的控制台消息:
70876 port DB=7 pii=18 DB=1
表示进程 ID 16588 的进程启动了 MongoDB,监听端口号为 27017。
控制台中还有一些其他有用的提示,例如:
对数据的读写访问和配置无限制- 无 设置读取和写入数据的权限
警告:此服务器已绑定到本地主机 - 此服务器已绑定到本地主机 - 可通过本地主机访问此服务器
使用命令 netstat -yes |在cmd中找到“27017”
,找到正确的进程ID在端口27017上监听进程16588:
打开MongoDB Compass,这是一个MongoDB GUI,在MongoDB安装过程中会自动安装。
主机名输入localhost,端口输入27017,点击Connect进行连接:
连接后,在admin数据库下新建一个集合:
在我的例子中,集合名称是person,点击INSERT DOCUMENT 创建记录是 MongoDB Compass 自动生成的 _id,第二个字段名称为 name,值为“Jerry”:
再次点击 INSERT DOCUMENT
生成两条人记录。
现在我们将打开另一个命令行窗口来使用在 MongoDB Compass 中创建的两人记录。
命令行mongo localhost:27017/admin
表示连接到这个数据库中的admin数据库
此时可以看到从控制台开始连接到上一个命令行的输出MongoDB 服务器收到的输出:
命令行db.person.find()
,在管理员数据库的person表中打印两条记录,说明环境配置成功。
第2步 - 使用Node.js访问MongoDB
在localhost:27017的服务器上,在database admin下创建一个名为person的数据库表,并插入两条记录:
上图是使用成功插入的两条记录MongoDB 指南针。
接下来,我们将使用 Node.js 来读取这两条记录。 ? ).find({}).toArray,表示读取person表中的所有记录。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017";
MongoClient.connect(url, function(err, db) {
if (err){
console.log(err);
throw err;
}
console.log("Jerry DB connection established!");
var dbo = db.db("admin");
dbo.collection("person"). find({
}
).toArray(function(err, result) {
if (err)
throw err;
console.log(result);
db.close();
}
);
db.close();
}
);
如果我只想读取名为 Jerry 的记录,我只需要将 where 条件传递给 find 方法:
从调试器中,我可以观察到它正在以预期的方式读回:
第3步 - 使用Java代码向MongoDB插入数据
如果您是基于Maven进行依赖管理的Java项目,只需在您的pom.xml中添加以下依赖定义即可:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.6.4</version>
</dependency>
然后使用命令行 mvn clean install
然后你的本地maven仓库将会多出三个与MongoDB和Java链接相关的库:
- bson
- mongodbmongodbmongodbmongodbmongodb mongodb❓驱动程序当然,你也可以手动一一下载jar文件:https://mongodb.github.io/mongo-java-driver/
本文用到这三个文件,请下载到本地然后添加到类路径中的 Java 项目。
Java代码如下:
package mongoDB; import java.util.ArrayList; import java.util.List; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; public class MongoDBTest { private static void insert(MongoCollection<Document> collection) { Document document = new Document("name", "dog"); List<Document> documents = new ArrayList<Document>(); documents.add(document); collection.insertMany(documents); } public static void main(String args[]) { MongoClient mongoClient = null; try { mongoClient = new MongoClient("localhost", 27017); MongoDatabase mongoDatabase = mongoClient.getDatabase("admin"); System.out.println("Connect to database successfully"); MongoCollection<Document> collection = mongoDatabase .getCollection("person"); // insert(collection); FindIterable<Document> findIterable = collection.find(); MongoCursor<Document> mongoCursor = findIterable.iterator(); while (mongoCursor.hasNext()) { System.out.println(mongoCursor.next()); } } catch (Exception e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } finally{ mongoClient.close(); } } }
与本教程的步骤2相比,上述代码插入方法还展示了如何使用Java代码向MongoDB数据库添加记录。
private static void insert(MongoCollection<Document> collection) { Document document = new Document("name", "dog"); List<Document> documents = new ArrayList<Document>(); documents.add(document); collection.insertMany(documents); }
运行Java应用程序,发现使用insert方法添加到数据库的记录也能顺利读取。
总结
MongoDB是近年来关系型数据库和非关系型数据库中非常流行的解决方案。它采用分布式面向文档的设计思想,扩展性强,表结构松散,支持丰富的查询命令和数据类型。本文将首先介绍搭建本地 MongoDB 环境的步骤,然后介绍使用 Node.js 和 Java 向本地 MongoDB 读写数据的编程细节。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。