1.下载安装
下载地址:https://www.mongodb.com/download-center#community
在这我用的是Linux 64-bit legacy x64
安装
切换到下载的目录
tar -zxvf mongodb-linux-x86_64-3.4.1.tgz 解压
mv mongodb-linux-x86_64-3.4.1 /usr/local/mongodb 移动到指定目录
cd /usr/local/mongodb 切换目录
mkdir -p /db 创建目录
mkdir -p /log
cd bin/
./mongod --dbpath /usr/local/mongodb/db/ 指定数据库路径(--dbpath)启动
新开端口测试
cd /usr/local/mongodb/bin 切换目录
./mongo 默认连接到test库,可指定连接,格式:./mongo [user] [pwd] [ip]:[port]/[dbname]
2.创建用户并授权(MongoDB默认无需用户即可操作数据库)
启动数据库后
use admin
db.createUser({user:”root”,pwd:”rootp”,roles:[{role:”root”,db:”admin”}]})
db.auth(“root”,”rootp”)
角色说明(只列出部分):
关闭数据库,重新启动,这次是认证方式启动
./mongod --dbpath /usr/local/mongodb/db/ --auth
客户端再次连接
./mongo
进行命令操作,如:
show dbs
会提示无权限操作
所以,连接方式也是要认证
./mongo -uroot -prootp ip:port/admin
ip就是MongoDB服务器IP地址,port默认是27017
admin是指定要连接的数据库名
再试操作命令,即可正常显示
可查看用户和删除用户
db 查看当前使用的数据库
use admin
db.system.users.find() 查询所有用户
db.system.user.remove({user:”xxx”}) 删除用户xxx
3.Java操作MongoDB
引用jar包
package com.mongo; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.result.UpdateResult; public class MongoDb { private static MongoCollection<Document> collection; /** * 链接数据库 * @param databaseName 数据库名称 * @param collectionName 集合名称 * @param hostName 主机名 * @param port 端口号 */ public static void connect(String databaseName, String collectionName, String hostName, int port) { @SuppressWarnings("resource") MongoClient client = new MongoClient(hostName, port); MongoDatabase db = client.getDatabase(databaseName); collection = db.getCollection(collectionName); } public static void connect(String databaseName, String collectionName, String hostName, int port, String username, String password) { MongoCredential credential = MongoCredential.createScramSha1Credential(username, databaseName, password.toCharArray()); @SuppressWarnings("resource") MongoClient client = new MongoClient(new ServerAddress(hostName, port), Arrays.asList(credential)); MongoDatabase db = client.getDatabase(databaseName); collection = db.getCollection(collectionName); } /** * 插入一个文档 * @param document 文档 */ public static void insert(Document document) { collection.insertOne(document); } /** * 查询所有文档 * @return 所有文档集合 */ public static List<Document> findAll() { List<Document> results = new ArrayList<Document>(); FindIterable<Document> iterables = collection.find(); MongoCursor<Document> cursor = iterables.iterator(); while (cursor.hasNext()) { results.add(cursor.next()); } return results; } /** * 根据条件查询 * @param filter 查询条件 //注意Bson的几个实现类,BasicDBObject, BsonDocument, * BsonDocumentWrapper, CommandResult, Document, RawBsonDocument * @return 返回集合列表 */ public static List<Document> findBy(Bson filter) { List<Document> results = new ArrayList<Document>(); FindIterable<Document> iterables = collection.find(filter); MongoCursor<Document> cursor = iterables.iterator(); while (cursor.hasNext()) { results.add(cursor.next()); } return results; } /** * 更新查询到的第一个 * @param filter 查询条件 * @param update 更新文档 * @return 更新结果 */ public static UpdateResult updateOne(Bson filter, Bson update) { UpdateResult result = collection.updateOne(filter, update); return result; } /** * 更新查询到的所有的文档 * @param filter 查询条件 * @param update 更新文档 * @return 更新结果 */ public static UpdateResult updateMany(Bson filter, Bson update) { UpdateResult result = collection.updateMany(filter, update); return result; } /** * 更新一个文档, 结果是replacement是新文档,老文档完全被替换 * @param filter 查询条件 * @param replacement 跟新文档 */ public static void replace(Bson filter, Document replacement) { collection.replaceOne(filter, replacement); } /** * 根据条件删除一个文档 * @param filter 查询条件 */ public static void deleteOne(Bson filter) { collection.deleteOne(filter); } /** * 根据条件删除多个文档 * @param filter 查询条件 */ public static void deleteMany(Bson filter) { collection.deleteMany(filter); } }
测试
package com.test; import java.util.List; import org.bson.Document; import org.junit.BeforeClass; import org.junit.Test; import com.mongo.MongoDb; import com.mongodb.client.result.UpdateResult; public class TestMongo { @BeforeClass public static void setUpBeforeClass() throws Exception { try { MongoDb.connect("test", "ht", "xxx", 27017, "testu", "testp"); } catch (Exception e) { e.printStackTrace(); } } @Test public void testInsert() { Document document = new Document(); document.append("name", "test").append("age", 20).append("cell", "167575"); MongoDb.insert(document); } @Test public void testFindAll() { List<Document> results = MongoDb.findAll(); for(Document doc : results){ System.out.println(doc.toJson()); } } @Test public void testFindBy() { Document filter = new Document(); filter.append("name", "张三"); List<Document> results = MongoDb.findBy(filter); for (Document doc : results) { System.out.println(doc.toJson()); } } @Test public void testUpdateOne() { Document filter = new Document(); filter.append("age", 21); //注意update文档里要包含"$set"字段 Document update = new Document(); update.append("$set", new Document("name", "李四")); UpdateResult result = MongoDb.updateOne(filter, update); System.out.println("matched count = " + result.getMatchedCount()); } @Test public void testUpdateMany() { Document filter = new Document(); filter.append("age", 20); Document update = new Document(); update.append("$set", new Document("age", 21)); UpdateResult result = MongoDb.updateMany(filter, update); System.out.println("matched count = " + result.getMatchedCount()); } @Test public void testReplace() { Document filter = new Document(); filter.append("cell", "15803948943"); //注意:更新文档时,不需要使用"$set" Document replacement = new Document(); replacement.append("name", "李四"); replacement.append("age", 21); replacement.append("cell", "15803948943"); MongoDb.replace(filter, replacement); } @Test public void testDeleteOne() { Document filter = new Document(); filter.append("cell", "15803948943"); MongoDb.deleteOne(filter); } @Test public void testDeleteMany() { Document filter = new Document(); filter.append("age", 21); MongoDb.deleteMany(filter); } }
补充:
添加MongoDB服务
cd /usr/local/mongodb
touch mongod.conf 创建文件
添加如下内容:
dbpath=/usr/local/mongodb/db
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true
fork=true
auth=true
保存
启动命令参数说明:
cd /etc/rc.d/init.d
touch mongo 创建文件
添加如下内容:
#!/bin/bash #chkconfig: 2345 80 90 #description: mongodb start() { /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongod.conf } stop() { /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongod.conf --shutdown } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac
保存
chmod +x mongo 给该文件添加可执行权限
将命令添加到PATH中
vim /etc/profile
在文件最后添加如下内容:
export PATH=”$PATH:/usr/local/mongodb/bin”
保存
source profile 立即生效
添加服务
chkconfig -add mongo
chkconfig mongo on
service mongo start 启动服务
service mongo stop 关闭服务
因为添加到PATH,所以可在任何目录下直接用客户端连接:
mongo -uroot -prootp ip:port/admin
相关推荐
MongoDB学习总结入门篇.pdf MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。下面将对MongoDB的基本概念、特点、使用原理和基本操作进行详细介绍。 1. MongoDB基本...
这个库允许开发者通过使用注解和基于Java的配置来处理MongoDB的操作。以下是对标题和描述中提到的知识点的详细说明: 1. **@Document** 注解:在Java实体类上使用`@Document`注解表示该类将映射到MongoDB的一个集合...
Java 中 MongoDB 使用环境详细配置 Java 中 MongoDB 使用环境详细配置是指在 Windows 平台(WinXP)上安装、运行、安装 Windows 服务的笔记,以作备忘。下面是一些重要的知识点: 1. MongoDB 的下载和安装 ...
MongoDB 使用BSON(Binary JSON)格式存储数据,这是一种类似JSON的二进制表示,支持更丰富的数据类型,如日期、整数、双精度浮点数和二进制数据。文档是MongoDB中的基本数据单元,类似于JSON对象。 2. 集合与...
总结来说,MongoDB的基础操作涵盖了数据库的基本管理、数据的增删改查,而副本集和分片则是其在高可用性和可扩展性方面的核心特性。通过深入理解和熟练掌握这些知识,可以有效地利用MongoDB处理大规模的分布式数据...
10. **GROUP函数**:"关于MongoDB的group用法.docx"将介绍如何使用GROUP进行数据分组和聚合,这是数据分析和统计中的关键操作。 通过深入学习这些文档,你可以获得全面的MongoDB知识,从基础到高级,从理论到实践,...
总结来说,Spring Data MongoDB通过`MongoDBTemplate`简化了MongoDB的集成和操作,使得开发者能够专注于业务逻辑而不是底层数据库交互。对于初学者,这是一个很好的起点,可以快速上手MongoDB和Spring Data的使用。
本实验报告旨在详细介绍 MongoDB 的安装、配置和基本操作步骤,本报告基于 CentOS 7 系统,通过一步一步的截图和文字说明,帮助读者快速掌握 MongoDB 的使用。 一、安装 MongoDB 首先,我们需要配置 MongoDB 的 ...
### Windows 下 MongoDB 安装与使用详解 #### 一、MongoDB 简介 MongoDB 是一种基于分布式文件存储的开源数据库系统。它属于 NoSQL 数据库的一种,使用 BSON(Binary JSON)格式来存储数据,支持动态模式,使得开发...
总结,MongoDB是一款强大的NoSQL数据库,适用于处理大规模、结构多变的数据。了解并掌握MongoDB的安装、使用和管理技巧,是成为高效数据处理专家的重要一步。在学习过程中,参考“mongoDB安装及使用指南”这份资料,...
MongoDB 是一种流行的NoSQL数据库系统,以C++语言编写并开源。NoSQL数据库与传统的关系型数据库(RDBMS)不同,它不依赖于固定的表格模式,这使得NoSQL...因此,选择是否使用MongoDB应根据具体业务需求和技术栈来决定。
总结来说,这个示例提供了使用Java、Spark、MongoDB、Spring和Maven实现数据操作的基础步骤。它涵盖了从设置环境、构建项目、连接数据库到执行CRUD操作的全过程,对于学习和实践中处理大数据与NoSQL数据库的集成非常...
**标题:“Morphia和MongoDB学习总结<三>”** 在本文中,我们将深入探讨Morphia,一个用于Java的MongoDB对象数据映射(ODM)库,以及它如何与MongoDB数据库进行交互。Morphia简化了在MongoDB中存储和检索Java对象的...
总结,MongoDB 是一个功能强大的 NoSQL 数据库,其易于安装、管理用户权限和数据操作的特性使其成为许多企业的首选。通过理解并熟练掌握这些基础知识,可以有效地利用 MongoDB 构建高效、可扩展的应用程序。
通过阅读这份"MongoDB总结"文件,学习者将能够掌握MongoDB的基本概念、操作以及在实际项目中的应用,为进一步学习和使用MongoDB打下坚实基础。利用Markdown格式,内容易于阅读和理解,结合Typora等编辑器,学习体验...
总结来说,MongoDB是一个功能强大的文档型数据库,适用于各种现代应用场景。了解并掌握其安装、使用和基本语法是开发过程中不可或缺的技能。通过阅读和实践本手册,你将能够熟练地运用MongoDB进行数据存储和处理。
总结,MongoDB在京东的使用充分体现了其作为现代NoSQL数据库的优势,不仅能满足电商平台的高并发、大数据需求,还能提供灵活的数据模型和强大的数据分析能力,助力京东提升用户体验和服务质量。通过不断优化和创新,...
- MongoDB使用类似SQL的查询语法,如`find()`用于查找文档,`update()`用于更新文档,`remove()`用于删除文档。 - 查询条件可以基于字段值,也可以使用正则表达式、范围查询等复杂条件。 - MongoDB还支持聚合操作...