MongoDB基础、java对MongoDB的CRUD

1. 简介

MongoDB是一个开源的基于分布式的文件存储系统,它将数据以文档的形式存储,数据结构由键值对(k,v)组成,其文档有种类似json对象的感觉。

2. 概念理解

  1. 数据库:database;
  2. 集合:collection,可以理解为RDBMS中的表;
  3. 文档:document,可以理解为RDBMS中的一行记录
  4. 主键:primary key,MongoDB自动将_id字段设置为主键

3. 基本操作

  1. 创建数据库:use DATABASE_NAME;
    检查当前选择的数据库:db;
    查询数据库列表:show dbs;
  2. 删除数据库:db.dropDatabase();
  3. 插入文档(插入时会自动创建集合): db.COLLECTION_NAME.insert(document)
    //_id默认创建
    db.collection_name.insert({
    name: 'qs123'
    })
    
  4. 查询文档:db.COLLECTION_NAME.find()
    //查询所有
    db.collection_name.find()
    //按条件查询
    db.collection_name.find({"name":"qs123"})
    
  5. MongoDB中的and和or:
    and:用逗号“,”分开即可
    db.collection_name.find({key1:value1, key2:value2})
    
    or:需要使用$or关键字
    db.collection_name.find(
    {
      $or: [
         {key1: value1}, {key2:value2}
      ]
    }
    )
    
  6. 更新文档:
    db.collection_name.update({
    'name':'qs123'},{$set:{'name':'newQs123}
    })
    
  7. 删除文档:remove()
    //删除所有name="newQs123"的文档
    db.collection_name.remove({
    'name':'newQs123'
    })
    
  8. Save方法:将会替换要操作的文档

4. java操作MongoDB

  1. 工程中引入依赖
    <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongodb-driver</artifactId>
      <version>3.11.0</version>
    </dependency>
  1. java对MongoDB的CRUD
package com.qs.mongo.utils;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;

/**
 * 连接数据库
 *
 * @Author: QuS
 * @Date: 2019/10/11 9:55
 */
public class MongoDBJDBC {

    public MongoDatabase getConnection() {
        MongoDatabase mongoDatabase = null;
        try {
            //连接到mongodb服务
            MongoClient mongoClient = new MongoClient("localhost", 27017);
            //连接数据库
            mongoDatabase = mongoClient.getDatabase("test");
            System.out.println("=======Connect to database successfully=========");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("=======Connect to database error==========");
        }
        return mongoDatabase;
    }
}

package com.qs.mongo.operate;

import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.qs.mongo.utils.MongoDBJDBC;
import org.bson.Document;
import org.junit.Before;
import org.junit.Test;

import java.util.ArrayList;

import com.mongodb.client.model.Filters;

/**
 * @Author: QuS
 * @Date: 2019/10/11 10:14
 */
public class MongoCRUD {

    MongoDatabase mongoDatabase = null;

    /**
     * 获取连接
     */
    @Before
    public void getConnection() {
        MongoDBJDBC mongoDBJDBC = new MongoDBJDBC();
        mongoDatabase = mongoDBJDBC.getConnection();
    }

    /**
     * 选择集合(理解为表)并且插入文档(理解为一行一行的数据)
     */
    @Test
    public void getCollectionAndInsert() {
        try {
            MongoCollection<Document> collection = mongoDatabase.getCollection("qs");
            System.out.println("======集合qs选择成功=====");
            //插入文档
            Document document1 = new Document("_id", "1")
                    .append("name", "qushuai1")
                    .append("sex", "男")
                    .append("age", "22")
                    .append("phone", "12345678")
                    .append("addr", "天津");
            Document document2 = new Document("_id", "2")
                    .append("name", "qushuai2")
                    .append("sex", "男")
                    .append("age", "19")
                    .append("phone", "12345678")
                    .append("addr", "成都");
            ArrayList<Document> documents = new ArrayList<>();
            documents.add(document1);
            documents.add(document2);
            collection.insertMany(documents);
            System.out.println("========文档插入成功===========");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 查询所有文档(可以理解为RDBMS中的一行一行的数据)
     */
    @Test
    public void queryDocuments() {
        //选择集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("qs");
        //查询集合中所有的文档
        FindIterable<Document> documentsIt = collection.find();
        MongoCursor<Document> it = documentsIt.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }

    /**
     * 更新文档
     */
    @Test
    public void updateDocument() {
        //选择集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("qs");
        //更新文档  将addr=成都改为addr=上海
        collection.updateMany(Filters.eq("addr", "成都"),
                new Document("$set", new Document("addr", "上海")));
        System.out.println("========文档更新成功==========");
        //查看结果
        MongoCursor<Document> it = collection.find().iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }

    /**
     * 删除文档
     */
    @Test
    public void deleteDocument() {
        MongoCollection<Document> collection = mongoDatabase.getCollection("qs");
        //删除符合条件的第一个文档(删除第一个name=qs321的文档)
        collection.deleteOne(Filters.eq("name", "qs321"));
        System.out.println("========第一个删除成功========");
        //删除所有符合条件的文档(删除所有sex=男 and name=qs321)
        BasicDBObject condition1 = new BasicDBObject();
        condition1.put("sex", "男");
        condition1.put("name", "qs321");
        collection.deleteMany(condition1);
        //删除所有符合条件的文档(删除所有id=1 or id=2)
        //通过BasicDBList与BasicDBObject的相结合可以得出比较复杂的条件。
        BasicDBObject condition2 = new BasicDBObject();
        BasicDBList values = new BasicDBList();
        values.add(new BasicDBObject("_id", "1"));
        values.add(new BasicDBObject("_id", "2"));
        condition2.put("$or", values);
        collection.deleteMany(condition2);
        //删除age<20 or name=qushuai1的文档
        BasicDBObject condition3 = new BasicDBObject();
        BasicDBList values1 = new BasicDBList();
        values1.add(new BasicDBObject("age", new BasicDBObject("$lt", 20)));
        values1.add(new BasicDBObject("name", "qushuai1"));
        condition3.put("$or", values1);
        collection.deleteMany(condition3);
        //查看结果
        MongoCursor<Document> it = collection.find().iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值