MongoDB基础使用

1. 简介

MongoDB是一种基于文档存储的NoSQL。

2. MongoDB的安装

https://blog.51cto.com/13641879/2141129

3.MongoDB Shell基本命令

https://www.cnblogs.com/clsn/p/8214194.html#auto_id_25

// 创建数据库  不存在则自动创建,没有数据则退出后删除
use test;
// 查看所有数据库
show dbs;
// 删除数据库
db.dropDatabase()
// 集合 类似关系型数据库中的表
// 查看已有集合
show collections
// 或者
show tables;
// 创建一个固定集合,大小为1024Kb,最大数量为1000条
db.createCollection("myTbl",{capped : true, autoIndexId : true, size : 1024, max:1000 })
// 删除集合
db.myTbl.drop();
// 直接往不存在的集合插入文档,则自动创建集合
db.a.insert({name:'zdq',age:'18',sex:'1'})
// 往集合中插入文档
db.a.insert({name:'mongo',age:'20',sex:'1'})
// 查询数据
db.a.find();
// 查找年龄大于19的数据
db.a.find({name:{$gt:"19"}});
// 查找年龄大于19并且性别为0的人
db.a.find({name:{$gt:"19"},sex:"0"});
// 查找年龄大于19或者性别为1的人
db.a.find({name:{$gt:"19"},$or:[{sex:"0"}]});
// 易读的方式查询文档
db.a.find().pretty();
// 更改文档,固定集合不能更改
db.a.update({name:'zdq'},{$set:{name:'mongo2'}})
// 删除文档
db.a.remove({name:"mongo2"})

4. Java操作MongoDB

Maven相关依赖引入

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.11.0</version>
</dependency>

Java简单操作MongoDB

public class MongoUtil {

    private static final Logger LOGGER = LoggerFactory.getLogger(MongoUtil.class);

    // 获取客户端连接
    public static MongoClient getMongoClient (){
        ServerAddress serverAddress = new ServerAddress("192.168.128.131", 27017);
        List<ServerAddress> list = new ArrayList<ServerAddress>();
        list.add(serverAddress);
        MongoCredential credential = MongoCredential.createScramSha1Credential("zdq", "zdq", "123456".toCharArray());
        List<MongoCredential> credentials = new ArrayList<MongoCredential>();
        credentials.add(credential);
        return new MongoClient(list, credentials);
    }
    // 获取所有的tables
    public static void showCollection (){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        //db.createCollection("passport");
        MongoIterable<String> tables = db.listCollectionNames();
        MongoCursor<String> cursor = tables.iterator();
        while (cursor.hasNext()){
            LOGGER.info(cursor.next());
        }
    }
    // 获取passport下面的所有数据
    public static void showDataList (){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        MongoCollection<Document> collection = db.getCollection("passport");
        FindIterable<Document> documents = collection.find();
        MongoCursor<Document> mongoCursor = documents.iterator();
        while (mongoCursor.hasNext()) {
            Document doc = mongoCursor.next();
            LOGGER.info(doc.toJson());
        }
    }
    // 往passport添加数据
    public static void saveData (){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        MongoCollection<Document> collection = db.getCollection("passport");
        Map<String, Object> map = new HashMap<>();
        map.put("name", "lucy");
        map.put("age", "23");
        Document document = new Document(map);
        collection.insertOne(document);
    }
    // 查找数据
    public static void findData(){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        MongoCollection<Document> collection = db.getCollection("passport");
        FindIterable<Document> documents = collection.find(Filters.gt("age", "23"));
        MongoCursor<Document> mongoCursor = documents.iterator();
        while (mongoCursor.hasNext()) {
            Document doc = mongoCursor.next();
            LOGGER.info(doc.toJson());
        }
    }
    // 修改数据
    public static void updateDate(){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        MongoCollection<Document> collection = db.getCollection("passport");
        Map<String, Object> map = new HashMap<>();
        map.put("name", "lancy");
        map.put("age", 17);
        map.put("sex", "1");
        UpdateResult updateResult = collection.updateMany(new Document("name", "jack"), new Document("$set", new Document(map)));
        LOGGER.info("matchedCount:" + updateResult.getMatchedCount() + " modifiedCount:" + updateResult.getModifiedCount());
    }

    public static void main (String[] args){
        showDataList();
    }
}

5.SpringBoot整合MongoDB 使用MongoTemplate

Maven相关依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

yml配置文件

spring:
  data:
    mongodb:
      uri: mongodb://zdq:123456@192.168.128.131:27017/zdq  #这里使用了权限认证

定义一个UserInfo对象存储到MongoDB

@Data
@ToString
@Document(collection = "userInfo")  //指定默认的保存的集合
public class UserInfo implements Serializable {

private static final long serialVersionUID = -4709412514538567218L;

@Id // MongoDB存储的文档必须有一个唯一的"_id"值,没有指定则会自动生成
private String id;
private String username;
private Integer age;
private Integer sex;
}

插入数据可用insert或者save。save语句如果原数据_id已经存在那么就相当于update操作,否则为insert操作。

        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("sunhonglei");
        userInfo.setAge(50);
        userInfo.setSex(1);
        mongoTemplate.save(userInfo);
//        mongoTemplate.insert(userInfo);

指定条件查询

        // 查找性别为男并且年龄大于20的用户信息
        Query query = new Query();
        query.addCriteria(Criteria.where("sex").is(1).and("age").gt(20));
        List<UserInfo> list = mongoTemplate.find(query, UserInfo.class);
        for (UserInfo u : list){
            logger.info(u.toString());
        }

修改语句

        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is("zhangxueyou11111"));
        Update update = Update.update("age", 55);
        UpdateResult updateResult = mongoTemplate.updateFirst(query, update, UserInfo.class);
        logger.info("matchedCount: " + updateResult.getMatchedCount() + " modifiedCount: " + updateResult.getModifiedCount());

删除语句,删除id为zhangxueyou11111的文档

        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is("zhangxueyou11111"));
        DeleteResult deleteResult = mongoTemplate.remove(query, UserInfo.class);
        logger.info("deletedCount: " + deleteResult.getDeletedCount());
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 1.1.2 ...
    zwb_jianshu阅读 380评论 0 1
  • 慕课网学习笔记。学习视频地址:https://www.imooc.com/learn/295教程版本为2.x,部分...
    edwin1993阅读 544评论 0 1
  • 这次不废话了,直接上干货。 linux 环境搭建 MongoDB 官方提供了各种 linux 的发行版本,强烈建议...
    吴佳轶阅读 2,852评论 0 139
  • 一、什么是MongoDB MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库...
    LemonnYan阅读 5,078评论 0 2
  • 安装 MongoDB Windowns、Ubuntu17.10 下安装 MongoDB教程在此 MongoDB 帮...
    Kangvcar阅读 2,087评论 0 13