linux安装mongoDB数据库,java集成mongoDB

 

基本概念

  • 文档是 MongoDB 中数据的基本单元,非常类似于关系型数据库中的行,但更具有表现力;
  • 集合 Collection 可以看作是一个动态模式(Dynamic Schema)的表;
  • MongoDB 的一个实例可以拥有多个相互独立的数据库 ( Database),每一个数据库都拥有自己的集合;
  • 每一个文档都有一个特殊的键 _id ,这个键在文档所属的集合中是唯一的;
  • MongoDB 自带了一个简单但功能强大的 JavaScript Shell ,可用于管理 MongoDB 的实例或数据操作。

一.在linux服务器上安装mongodb

下 载: curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
解 压: tar -zxvf mongodb-linux-x86_64-3.0.6.tgz  
重命名: mv  mongodb-linux-x86_64-3.0.6 mongodb  
删除安装包:rf  mongodb-linux-x86_64-3.0.6.tgz

创建数据库目录

mongodb的默认数据库放在 /data/db目录下

如果没有的话,就根目录下创建这个目录

打开数据库链接

[root@VM_0_16_centos]# cd /usr/local/mongodb/bin

[root@VM_0_16_centos bin]# ./mongod

看到如下代表启动成功了

重启打开个终端,进入数据库页面

[root@VM_0_16_centos]# cd /usr/local/mongodb/bin

[root@VM_0_16_centos bin]# ./mongo

看到如下,你已经进去到了数据库里面了

简单的创建1个数据库,创建1张表,插入2条数据用于标题3的java远程连接mongodb数据库

二.在终端上操作mongodb 命令

2.1数据库操作

Help查看命令提示

 help

  db.help();

  db.yourColl.help();

  db.youColl.find().help();

  rs.help();

查询所有数据库

 show dbs;

增加/切换数据库   (存在则切换,不存在则创建类似于hibrenate中的save方法)
use[db名称]

删除当前使用数据库

 db.dropDatabase();

5、从指定主机上克隆数据库

 db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库

6、从指定的机器上复制指定数据库数据到某个数据库

 db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中

7、修复当前数据库

 db.repairDatabase();

8、查看当前使用的数据库

 db.getName();

 db; db和getName方法是一样的效果,都可以查询当前使用的数据库

9、显示当前db状态

 db.stats();

10、当前db版本

 db.version();

11、查看当前db的链接机器地址

 db.getMongo();

2.2Collection聚集集合

查询所有集合  show collections

1、创建一个聚集集合(table)

 db.createCollection(“collName”, {size: 20, capped: 5, max: 100});

2、得到指定名称的聚集集合(table)

 db.getCollection("account");

3、得到当前db的所有聚集集合

 db.getCollectionNames();

4、显示当前db所有聚集索引的状态

 db.printCollectionStats();


创建集合并且插入数据     db.集合名称.insert({"key":"value"});
db.test1.insert({"name":"李俊明"});   如果不插入 _id   系统会默认把内存地址作为_id

如果id存在使用save方法会修改之前的值
db.test1.insert({_id:"111",name:"李俊明"});
db.test1.save({_id:"111",name:"李俊"});

批量插入数据
db.test1.insert([{"sex":1},{"grade":2}]);

修改数据
query是条件,update是要修改的值  upsert为true,查询条件没查到则新增记录,默认false不插入
multi为true更新所有查出的记录,默认为false,只修改第1条
db.test1.update(query,update,{upsert:boolean,$multi:boolean});
db.test1.update({sex:1},{$set:{age:101}},{upsert:true,multi:true});

删除数据  justOne 如果为true或1 只删除1个文档,默认删除所有匹配到的    
db.test1.remove(query,{justOne:boolean})

2.3用户相关

1、添加一个用户

 db.addUser("name");

 db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读

2、数据库认证、安全模式

 db.auth("userName", "123123");

3、显示当前所有用户

 show users;

4、删除用户

 db.removeUser("userName");
其他
1、查询之前的错误信息
 db.getPrevError();
2、清除错误记录
 db.resetError();
 
查看聚集集合基本信息

1、查看帮助  db.yourColl.help();

2、查询当前集合的数据条数  db.yourColl.count();

3、查看数据空间大小 db.userInfo.dataSize();

4、得到当前聚集集合所在的db db.userInfo.getDB();

5、得到当前聚集的状态 db.userInfo.stats();

6、得到聚集集合总大小 db.userInfo.totalSize();

7、聚集集合储存空间大小 db.userInfo.storageSize();

8、Shard版本信息  db.userInfo.getShardVersion()

9、聚集集合重命名 db.userInfo.renameCollection("users"); 将userInfo重命名为users

10、删除当前聚集集合 db.userInfo.drop();

2.4聚集集合查询

1、查询所有记录

db.userInfo.find();

相当于:select* from userInfo;

默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”

但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;这样每页就显示50条记录了。

2、查询去掉后的当前聚集集合中的某列的重复数据

db.userInfo.distinct("name");

会过滤掉name中的相同数据

相当于:select distict name from userInfo;

3、查询age = 22的记录

db.userInfo.find({"age": 22});

相当于: select * from userInfo where age = 22;

4、查询age > 22的记录

db.userInfo.find({age: {$gt: 22}});

相当于:select * from userInfo where age >22;

5、查询age < 22的记录

db.userInfo.find({age: {$lt: 22}});

相当于:select * from userInfo where age <22;

6、查询age >= 25的记录

db.userInfo.find({age: {$gte: 25}});

相当于:select * from userInfo where age >= 25;

7、查询age <= 25的记录

db.userInfo.find({age: {$lte: 25}});

8、查询age >= 23 并且 age <= 26

db.userInfo.find({age: {$gte: 23, $lte: 26}});

9、查询name中包含 mongo的数据

db.userInfo.find({name: /mongo/});

//相当于%%

select * from userInfo where name like ‘%mongo%’;

10、查询name中以mongo开头的

db.userInfo.find({name: /^mongo/});

select * from userInfo where name like ‘mongo%’;

11、查询指定列name、age数据

db.userInfo.find({}, {name: 1, age: 1});

相当于:select name, age from userInfo;

当然name也可以用true或false,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。

12、查询指定列name、age数据, age > 25

db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});

相当于:select name, age from userInfo where age >25;

13.分页查询     number表示查询几条,num代表跳过记录数
db.userInfo.find().limit(number).skip(num);

三. java远程连接mongodb

本人用的工具是idea,项目框架是springboot,如果不会创建springboot项目的看下

我这篇初学者springboot文章url:https://blog.csdn.net/ming19951224/article/details/80978261

1.引入springboot和mongodb依赖包

<dependencies>
		<!-- spring-boot-starter-data-mongodb -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-mongodb</artifactId>
		</dependency>
		<!--mongodb依赖-->
		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongo-java-driver</artifactId>
		</dependency>
		<!-- web -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
</dependencies>

2.application.properties文件里面配置mongodb连接属性

spring.data.mongodb.host=127.0.0.1   #IP
spring.data.mongodb.port=27017       #端口号 
spring.data.mongodb.database= school #数据库名称

3.创建和mongdb对应的实体类

package com.ljm.spring.boot.entity;

import org.springframework.data.mongodb.core.mapping.Document;

/**
 * Created by ming
 * on  date 2018-06-03
 * time 13:00
 * @Doucument表示这个类对应mongodb里面的集合也就是表
 * 类似于hibrenate里面的@Table注解
 */
@Document(collection="student")
public class Student {
    private String _id;
    private String name;
    private Integer  age;
    private Integer gender;
    private String greadeId;

    public String get_id() {
        return _id;
    }

    public void set_id(String _id) {
        this._id = _id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }
}

4.调用dao层方法访问mongodb数据库


import java.util.List;

/**
 * @author lijunming
 * @date 2018/7/18 上午1:47
 */
@RestController("/student")
public class StudentController {
    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 添加或修改
     * @param student
     * @return
     */
    @RequestMapping("/save") 
    public String save(Student student) {
        mongoTemplate.save(student);
        return "0";
    }

    /**
     * 分页查询,类似mysql的limit
     * @return
     */
    @RequestMapping("/find")
    public String findToMongoDB() {
        Query query = new Query();
        query.skip(0).limit(2);
        List<Student> student = mongoTemplate.find(query, Student.class);
        System.out.println(student.size());
        return JSON.toJSONString(student);
    }

    /**
     * 删除对象
     * @param id
     * @return
     */
    @RequestMapping("/remove")
    public String removeToMongoDB(String id) {
        Query query = Query.query(Criteria.where("_id").is(id));
        mongoTemplate.remove(query, Student.class);
        return "0";
    }
}

猜你喜欢

转载自blog.csdn.net/ming19951224/article/details/81090342