`
javandroid
  • 浏览: 25582 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

MongoDB入门

 
阅读更多

基本概念

MongoDB中的几个基本概念:数据库,集合,文档
数据库
数据库是一个物理容器集合。每个数据库都有自己的一套文件系统上的文件。一个单一的MongoDB服务器通常有多个数据库。

集合
集合是一组MongoDB的文档。它相当于一个RDBMS表。收集存在于一个单一的数据库。集合不执行模式。集合内的文档可以有不同的领域。
通常情况下,一个集合中的所有文件是相同或相关的目的。

文档
文档是一组K - V对。文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。

mongodb命令

启动mongo:mongod -dbpath="数据文件夹路径"
mongo localhost:27017

use mydb;//创建数据库
db.dropDatabase();//删除当前数据库

show dbs;//查询所有数据库

db;//查询当前所在的数据库

创建集合的方式

创建集合有两种方式
1.显示创建
db.createCollection("person")
2.隐式创建
db.c1.insert({name:"haiou",desc:"baji"})//创建c1集合,同时插入数据

//显示当前数据库中的所有集合
show collections;//显示person,c1和system.indexes
或show tables;

for(var i=0;i<100000;i++){
db.person.insert({name:"liguannan",age:i});
}

db.person.find();//显示所有的记录(命令行中只会显示20条记录)

db.person.find().count();//统计记录数

db.person.findOne();//查询第一条记录

db.person.find({age:19});//条件查询:查询age=19的记录

db.person.find({age:19},{name:1});//过滤字段:结果只显示name列

db.person.remove({age:19});//删除

db.person.find().skip(1).limit(10);//分页:从1开始,前10条

xx.sort({age:-1});//按照age降序:-1表示降序,1表示升序

java连接mongodb

applicationContext.xml
<!-- 引入mongo的配置文件 -->
<import resource="mongo-config.xml"/>

mongo-config.xml
<!-- 配置mongo实例 -->
<mongo:mongo host="localhost" port="27017" />

<!-- Offers convenience methods and automatic mapping between MongoDB JSON 
	documents and your domain classes. -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
	<constructor-arg ref="mongo" />
	<constructor-arg name="databaseName" value="foobar" />
</bean>

实体类User.java
package com.yihaomen.mongodb.domain;

import java.io.Serializable;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document
public class User implements Serializable{  
	 
    private static final long serialVersionUID = 1L;  
      
    @Id  
    String uid;  
    String name;  
    int age;  
       
    public String getUid() {  
        return uid;  
    }  
    public void setUid(String uid) {  
        this.uid = uid;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public int getAge() {  
        return age;  
    }  
    public void setAge(int age) {  
        this.age = age;  
    }  
      
    @Override  
    public String toString() {  
        return "{USER:{uid:"+this.uid+",name:"+this.name+",age:"+this.age+"}}";  
    }  
      
}
UserServiceImpl.java
@Service(value = "userService")   
public class UserServiceImpl implements UserService{  
      
    private static String USER_COLLECTION = "User";  
  
    @Autowired  
    MongoTemplate mongoTemplate;  
      
   
    public void saveUser(User user){  
        mongoTemplate.save(user);          
    }        
   
    public User findUserByName(String name){
        return mongoTemplate.findOne(new Query(Criteria.where("name").is(name)), User.class);  
    }

	public User findFirst(Query query) {
		return mongoTemplate.findOne(query, User.class);
	}

	public List<User> findUser(Class<User> entriclass) {
		return mongoTemplate.findAll(entriclass);
	}

	public List<User> findUs(Query query, Class<User> entriclass) {
		return mongoTemplate.find(query, entriclass);
	}


	public User findUserById(String id,Class<User> entityClass) {
		return mongoTemplate.findById(id, entityClass);
	}

	public void deleteUser(User user) {
		mongoTemplate.remove(user);
	}

	public void deleteAll(String ids) {
		String id[] = ids.split(",");
		for (int i = 0; i < id.length; i++) {
			User us = mongoTemplate.findById(id[i], User.class);
			mongoTemplate.remove(us);
		}
	}
	
	public void deleteByIn(String ids) {
		List<String> interests = new ArrayList<String>();
		String id[] = ids.split(",");
		for (int i = 0; i < id.length; i++) {
			interests.add(id[i]);
		}
		Query query = new Query();
		Criteria criteria = Criteria.where("uid").in(ids);
		query.addCriteria(criteria);
		mongoTemplate.remove(query, User.class);
	}
	
	public void update(Query query,Update update) {
		mongoTemplate.findAndModify(query, update, User.class);
	}
}
持久层直接注入MongoTemplate模板即可使用其封装的方法。
save()
find()
findOne()
findById()
findAll()
remove()
findAndModify()

Mongo数据库的备份和恢复

Mongo数据库的备份使用的命令是mongodump,数据库的恢复使用的命令是mongorestore命令。
例如,我们要备份
mongodump -h localhost:27017 -d foobar -o f:/mongoBackup
上面 的命令表示的意思是:将本地的foobar数据库备份到F盘符下的mongoBackup目录下。

现在我们可以将数据删掉(db.dropDatabases()),然后使用恢复命令将数据恢复。
mongorestore -h dbhost -d dbname -directoryperdb dbdirectory
-h:Mongo所在服务器的地址
-d:需要恢复的数据库实例,例如,test,当然这个名称也可以和备份的时候不一样,比如test2
-dirctoryperdb:备份数据库所在的位置,例如:c:\data\dump\test

Mongo数据库的导入与导出

Mongo数据库的导出与导入分别使用的命令是mongoexport和mongoimport。
导出:

导出数据可以使用命令:
mongoexport -h dbhost -d dbname -c collectionName -o output

参数说明:
-h 数据库地址
-d 指明使用的库
-c 指明要导出的集合
-o 指明要导出的文件名

mongoexport  -h localhost:27017 -d foobar -c user -o F://mongoExport.txt
上面命令表示的意思是:将foobar数据库中的user集合导出到F:\mongoExport.txt(也可以导出为word,excel等)
导出的文件打开后格式如下:
{ "_id" : "66", "_class" : "com.yihaomen.mongodb.domain.User", "name" : "66", "age" : 66 }
{ "_id" : "88", "_class" : "com.yihaomen.mongodb.domain.User", "name" : "88", "age" : 88 }
{ "_id" : { "$oid" : "55dfb5a5880b548e0df8ef9f" }, "uid" : 1, "name" : "lisi", "age" : 18 }
{ "_id" : { "$oid" : "55dfb5b5880b548e0df8efa0" }, "uid" : 2, "name" : "wangwu", "age" : 19 }
{ "_id" : { "$oid" : "55dfb5c4880b548e0df8efa1" }, "age" : 21, "name" : "zhangsan", "uid" : 3 }

导入:

导入数据可以使用命令:
mongoimport -h dbhost -d dbname -c collectionname 文件的地址...

参数说明:
-h 数据库地址
-d 指明使用的库
-c 指明要导入的集合
本地的文件地址...




安全认证

每个MongoDB实例中的数据库都可以有许多用户。如果开启了安全性检查,则只有数据库的认证用户才能执行读或者写操作。
在认证的上下文中,MongoDB会将普通的数据作为admin数据库处理。admin数据库中的用户被视为超级用户(即管理员)。
在认证之后,管理员可以读写所有数据库,执行特定的管理命令,如listDatabases和shutdown。在开启安全检查之前,一定要至少有一个管理员账号。

在admin数据库中创建管理员账号:
use admin;
db.addUser(“root”,”root”);

在test数据库中创建普通账号:
use test;
db.addUser(“zhangsan”,”123”);
db.addUser(“lisi”,”123”,true);
注意:用户zhangsan,密码为123,对test数据库拥有读写权限
用户lisi,密码为123,对test数据库拥有只读权限

重新启动数据库服务,并开启安全检查:
mongod --dbpath d:\mongo_data --auth


集群

主从复制(主从集群 )
为了方便演示,可以在一台计算机上来模拟主节点和从节点。在D盘创建两个目录master和slave,master目录作为主节点的数据文件的目录,slave目录作为从节点的数据文件的目录。
注意:主节点和从节点要指定不同的端口。
启动主节点:mongod --dbpath d:\master --port 10000 --master
启动从节点:mongod --dbpath d:\slave --port 10001 --slave --source localhost:10000

启动成功后就可以连接主节点进行操作了,而这些操作会同步到从节点。



副本集
副本集就是有自动故障恢复功能的主从集群。

主从集群和副本集最大的区别就是副本集没有固定的“主节点”;整个集群会选出一个“主节点”,当其挂掉后,又在剩下的从节点中选中其他节点为“主节点”,副本集总有一个活跃点(primary)和一个或多个备份节点(secondary)。

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx




分布式存储


Spring整合Mongodb

文档:
http://docs.spring.io/spring-data/data-document/docs/









分享到:
评论

相关推荐

    MongoDB入门指南.pdf

    MongoDB入门指南 MongoDB是一种开源的文档类型数据库,它具有高性能、可扩展、高可用、自动收缩等特性。MongoDB能够避免传统的ORM映射,从而有助于开发。MongoDB中的每一行记录就是一个文档,它是一个由键值对构成...

    MongoDB入门教程 + 架构简析 + java使用MongoDB的简单程序

    首先,我们从"MongoDB入门教程"开始。MongoDB采用的是键值对存储方式,数据以JSON格式(BSON)存储,这使得数据的读写更加自然和高效。MongoDB支持丰富的查询语法,包括字段选择、条件操作、排序和分组,为开发者...

    MongoDB入门.pdf

    ### MongoDB入门知识点详解 #### 一、NoSQL简介与MongoDB概述 - **NoSQL**:NoSQL(Not Only SQL)是一种非关系型数据库管理系统的总称,它突破了传统关系型数据库在处理大规模数据时的限制,尤其适用于大数据及高...

    MongoDB 入门

    在这个“MongoDB入门”主题中,我们将深入探讨MongoDB的基础知识、安装与配置、数据模型、查询操作以及高级特性。 首先,让我们了解MongoDB的基本概念。MongoDB以其“集合”(Collections)和“文档”(Documents)...

    mongoDB入门到精通.txt

    ### MongoDB入门到精通知识点概述 #### 一、MongoDB简介 MongoDB是一种开源的文档数据库,采用JSON格式存储数据,并提供了高性能、高可用性和自动扩展的能力。它属于NoSQL数据库的一种,非常适合处理大规模数据和...

    MongoDB入门到精通 中文资料

    Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。...

    MongoDB入门学习

    ### MongoDB入门学习知识点详解 #### 一、MongoDB简介与特点 MongoDB是一种非常流行的开源文档型NoSQL数据库系统,以其高性能、高可用性及易扩展性而著称。相较于传统的关系型数据库如MySQL、Oracle等,MongoDB...

    mongodb入门

    本书《mongodb入门》是一本旨在帮助初学者快速学习MongoDB基本用法的入门小书。它适合那些希望在短时间内掌握MongoDB核心概念和操作的读者。作者Karl Seguin是一位拥有丰富技术背景的开发者,其经历跨越多个领域和...

    mongodb入门到精通

    根据提供的文件内容,我们将详细探讨MongoDB相关的知识点,并围绕NoSQL数据库的特点和优势,以及分布式系统理论中的CAP定理和ACID与BASE模型。 首先,MongoDB是一种流行的NoSQL数据库,它以文档的形式存储数据,与...

    MongoDB入门到精通

    ### MongoDB入门到精通 #### 一、MongoDB简介 **MongoDB** 是一款采用 C++ 编写的开源、可扩展且高性能的文档型数据库。它以其面向文档的特性、易于扩展性和高性能而著称,成为了现代应用开发中非常受欢迎的选择之...

    MongoDB入门指南

    《MongoDB入门指南》是一个快速入门MongoDB的教程,它以MongoDB的3.0版本进行说明。本教程安装的是MongoDB Windows 64位版本,目的只是为了让读者快速的入门MongoDB,快速理解和操作MongoDB。在开发或生产中强烈要求...

    MongoDB 入门教程 chm手册

    MongoDB 的入门教程旨在帮助初学者快速掌握这个数据库系统的基本概念和操作。 《MongoDB 入门教程》CHM 手册可能涵盖以下关键知识点: 1. **数据模型**:MongoDB 使用类似 JSON 的文档结构(BSON)来存储数据,...

    MongoDB入门教程及用例

    1.mongodb-win32-i386-2.4.8.zip 由于大小限制,请到官网下载...2.MongoDB开发使用手册.docx 3.MongoDB快速入门教程.docx 4.MongoDB入门经典.doc 5.MougoTest.rar(MongoDB入门经典.doc用例)

    Mongodb入门教程、示例+Spring Boot完整示例+聚合.docx

    "Mongodb入门教程、示例+Spring Boot完整示例+聚合" 本节课将完整地介绍 MongoDB 的入门教程、示例、Spring Boot 完整示例和聚合。 简介 NoSQL(Not Only SQL)是一种非关系型的数据库, MongoDB 是基于分布式...

    MongoDB 入门教程笔记

    MongoDB 入门教程笔记

    MongoDB入门指南 by it-ebooks.epub

    MongoDB入门指南

    MongoDB入门篇1

    MongoDB入门篇1主要介绍了数据的基本概念,数据库管理系统(DBMS)的定义,常见的数据库管理系统,以及NoSQL数据库的相关知识。 1. 数据:数据是未经处理的原始记录,描述事物存在的符号,通常需要通过组织和分类...

    mongoDB入门实战手册(中文版)

    ### MongoDB入门实战手册知识点概述 #### 一、MongoDB简介 MongoDB是一种开源的文档型数据库,属于NoSQL数据库的一种。它使用JSON格式的文档来存储数据,具有高性能、高可用性和易扩展性等特点,非常适合处理半结构...

    MongoDB入门与开发范例

    ### MongoDB入门与开发范例 #### 一、MongoDB与NoSQL运动 MongoDB作为NoSQL运动中的一个重要成员,它的出现和发展标志着数据库技术领域的新篇章。NoSQL(Not Only SQL)运动强调使用非关系型数据存储,以解决传统...

    《mongodb入门》读书笔记

    ### MongoDB入门知识点详解 #### MongoDB概述 MongoDB是一款开源、高性能、无模式的文档型数据库系统,被广泛应用于Web应用及大数据处理等场景。它采用了BSON(Binary JSON)格式来存储数据,使得数据存储更加灵活...

Global site tag (gtag.js) - Google Analytics