`
Javahuhui
  • 浏览: 78840 次
  • 性别: 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 总结

    mongodb 使用总结,包括建库,增删改查的常用操作,数据库引用关系,索引建立和使用

    spring mongodb 用法总结和实例

    spring mongodb mongodb实例,spring data mongodb 操作实例总结

    mongodb总结

    mongodb总结

    MONGODB学习总结入门篇.pdf

    MONGODB学习总结入门篇.pdf

    mongodb学习总结.docx

    mongodb学习总结.docx

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

    MongoDB基础(自己总结不喜勿喷)基础操作,分片,副本集

    MongoDB学习总结笔记

    总结了近段时间我在自学MongoDB时的学习经验和自己的认识,对MongoDB入门的初学者会有很大启发。

    MONGODB学习总结入门篇

    MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

    MongoDB基本操作指南

    在使用MongoDB做产品原型的过程中,我们总结了MonogDB的一些亮点:使用JSON风格语法,易于掌握和理解:MongoDB使用JSON的变种BSON作为内部存储的格式和语法。针对MongoDB的操作都使用JSON风格语法,客户端提交或接收...

    mongodb数据库的学习与总结

    mongodb数据库的学习与总结

    mongoDB总结大全

    mongodb知识点总结, 涉及到mongodb的简单介绍 mongodb相关概念介绍 mongodb的安装(linux) mongodb的启动和连接 mongodb数据库和集合的操作,文档的增删改查相关操作 mongodb索引的建立和删除 mongodb的备份和恢复 ...

    K8s 部署 MongoDB(副本集)

    mongodb的集群搭建方式主要有三种,主从模式,Replica set模式,sharding模式, 三种模式各有优劣,适用于不同的场合,属Replica set应用最为广泛,主从模式现在用的较少,sharding模式最为完备,但配置维护较为复杂 ...

    mongodb实践总结

    mongdodb实践总结(中文版),一份工作中常遇到mongodb问题的总结文档

    nosql实验六- MongoDB的安装与基本操作.docx

    MongoDB 中文档的插入和保存是通过使用 insert 命令来实现的。例如,以下命令将插入一个新的文档: `db.collection.insertOne({name: "John", age: 30})` ### 删除文档 MongoDB 中文档的删除是通过使用 delete ...

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

    MongoDB总结,文件为md 格式 可以利用Typora打开文件,适合想学习非关系数据库的学生或者已经工作的程序员

    MongoDB入门总结

    本文档是本人学习Mongodb时的一些总结资料,主要是说明了Mongodb的基本语法及其简单操作使用,适合刚开始接触学习Mongodb的同仁。

    MongoDB安装和使用全过程

    MongoDB安装和使用全过程!windows平台下下载和安装Mongo数据库时总结的文档,分享给大家!

    mongoDB初入门总结

    mongoDB初学者参考文件,包括如何安装mongodb数据库,安装服务,简单语句操作。

    mongoDB学习 命令 安装

    mongoDB学习 命令 安装 总结 mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结mongoDB学习 命令 安装 总结

Global site tag (gtag.js) - Google Analytics