`
Javahuhui
  • 浏览: 80865 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MongoDB使用总结

阅读更多

   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副本集群
转载自LANCEYAN.COM:http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html
  • 大小: 26.5 KB
  • 大小: 8.3 KB
  • 大小: 19.1 KB
  • 大小: 17.5 KB
  • 大小: 9.8 KB
  • 大小: 9.9 KB
  • 大小: 37.8 KB
  • 大小: 41.2 KB
  • 大小: 35.3 KB
  • 大小: 30.2 KB
分享到:
评论

相关推荐

    MONGODB学习总结入门篇.pdf

    MongoDB学习总结入门篇.pdf MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。下面将对MongoDB的基本概念、特点、使用原理和基本操作进行详细介绍。 1. MongoDB基本...

    spring mongodb 用法总结和实例

    这个库允许开发者通过使用注解和基于Java的配置来处理MongoDB的操作。以下是对标题和描述中提到的知识点的详细说明: 1. **@Document** 注解:在Java实体类上使用`@Document`注解表示该类将映射到MongoDB的一个集合...

    java中mongodb使用环境详细配置

    Java 中 MongoDB 使用环境详细配置 Java 中 MongoDB 使用环境详细配置是指在 Windows 平台(WinXP)上安装、运行、安装 Windows 服务的笔记,以作备忘。下面是一些重要的知识点: 1. MongoDB 的下载和安装 ...

    mongodb总结

    MongoDB 使用BSON(Binary JSON)格式存储数据,这是一种类似JSON的二进制表示,支持更丰富的数据类型,如日期、整数、双精度浮点数和二进制数据。文档是MongoDB中的基本数据单元,类似于JSON对象。 2. 集合与...

    MongoDB基础(自己总结不喜勿喷)

    总结来说,MongoDB的基础操作涵盖了数据库的基本管理、数据的增删改查,而副本集和分片则是其在高可用性和可扩展性方面的核心特性。通过深入理解和熟练掌握这些知识,可以有效地利用MongoDB处理大规模的分布式数据...

    MongoDB学习总结笔记

    10. **GROUP函数**:"关于MongoDB的group用法.docx"将介绍如何使用GROUP进行数据分组和聚合,这是数据分析和统计中的关键操作。 通过深入学习这些文档,你可以获得全面的MongoDB知识,从基础到高级,从理论到实践,...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    总结来说,Spring Data MongoDB通过`MongoDBTemplate`简化了MongoDB的集成和操作,使得开发者能够专注于业务逻辑而不是底层数据库交互。对于初学者,这是一个很好的起点,可以快速上手MongoDB和Spring Data的使用。

    MongoDB实验 - .docx

    本实验报告旨在详细介绍 MongoDB 的安装、配置和基本操作步骤,本报告基于 CentOS 7 系统,通过一步一步的截图和文字说明,帮助读者快速掌握 MongoDB 的使用。 一、安装 MongoDB 首先,我们需要配置 MongoDB 的 ...

    windows下mongodb安装与使用整理

    ### Windows 下 MongoDB 安装与使用详解 #### 一、MongoDB 简介 MongoDB 是一种基于分布式文件存储的开源数据库系统。它属于 NoSQL 数据库的一种,使用 BSON(Binary JSON)格式来存储数据,支持动态模式,使得开发...

    mongoDB非关系型数据库安装以及使用指南

    总结,MongoDB是一款强大的NoSQL数据库,适用于处理大规模、结构多变的数据。了解并掌握MongoDB的安装、使用和管理技巧,是成为高效数据处理专家的重要一步。在学习过程中,参考“mongoDB安装及使用指南”这份资料,...

    mongodb学习总结.docx

    MongoDB 是一种流行的NoSQL数据库系统,以C++语言编写并开源。NoSQL数据库与传统的关系型数据库(RDBMS)不同,它不依赖于固定的表格模式,这使得NoSQL...因此,选择是否使用MongoDB应根据具体业务需求和技术栈来决定。

    spark 连接 mongodb 使用例子

    总结来说,这个示例提供了使用Java、Spark、MongoDB、Spring和Maven实现数据操作的基础步骤。它涵盖了从设置环境、构建项目、连接数据库到执行CRUD操作的全过程,对于学习和实践中处理大数据与NoSQL数据库的集成非常...

    Morphia和MongoDB学习总结<三>

    **标题:“Morphia和MongoDB学习总结&lt;三&gt;”** 在本文中,我们将深入探讨Morphia,一个用于Java的MongoDB对象数据映射(ODM)库,以及它如何与MongoDB数据库进行交互。Morphia简化了在MongoDB中存储和检索Java对象的...

    mongodb 的使用.docx

    总结,MongoDB 是一个功能强大的 NoSQL 数据库,其易于安装、管理用户权限和数据操作的特性使其成为许多企业的首选。通过理解并熟练掌握这些基础知识,可以有效地利用 MongoDB 构建高效、可扩展的应用程序。

    MongoDB总结,文件为md 格式 可以利用Typora打开文件

    通过阅读这份"MongoDB总结"文件,学习者将能够掌握MongoDB的基本概念、操作以及在实际项目中的应用,为进一步学习和使用MongoDB打下坚实基础。利用Markdown格式,内容易于阅读和理解,结合Typora等编辑器,学习体验...

    mongodb 使用手册

    总结来说,MongoDB是一个功能强大的文档型数据库,适用于各种现代应用场景。了解并掌握其安装、使用和基本语法是开发过程中不可或缺的技能。通过阅读和实践本手册,你将能够熟练地运用MongoDB进行数据存储和处理。

    MongoDB在京东的使用

    总结,MongoDB在京东的使用充分体现了其作为现代NoSQL数据库的优势,不仅能满足电商平台的高并发、大数据需求,还能提供灵活的数据模型和强大的数据分析能力,助力京东提升用户体验和服务质量。通过不断优化和创新,...

    mongodb数据库的学习与总结

    - MongoDB使用类似SQL的查询语法,如`find()`用于查找文档,`update()`用于更新文档,`remove()`用于删除文档。 - 查询条件可以基于字段值,也可以使用正则表达式、范围查询等复杂条件。 - MongoDB还支持聚合操作...

Global site tag (gtag.js) - Google Analytics