初学mongDB入门案例

win下初学mongDB入门案例

1.准备

下载mongoBD 并安装可视化工具是学习前必须的准备

安装百度即可 :https://blog.csdn.net/heshushun/article/details/77776706

在这里推荐可视化工具推荐使用Robo3T 或者Navocat 其他的可视化工具也可以 依据个人习惯而言,

那么我这里就使用Navocat 展示

2.数据库以及集合的创建

MongoDB在创建数据库的时候,如果已经有了这个数据库,那么会直接打开,如果没有,那么新建,并且在,MongoDB中如果这个数据库为空数据库,理解为什么都没有的数据库,那么我们查看这个数据库的时候是不存在的,这一点我刚开始也是很难理解为什么。想下为什么 MongoDB在创建数据库的时候是用use db 来创建数据库,以及带来的效果也就好理解了。

那么举个例子:

创建数据库m1DB,创建后查看所有的数据库

use  m1DB

show db

我们查看结果

在这里插入图片描述

这里没有 新建的数据库 因为数据库是空的

所以在学习的时候不妨这样

use m1DB //创建m1DB

db.createCollection("collection1") //创建一个 名字为 collection1 的集合

show dbs  //查看所有数据库

db//查看当前数据库 

我们查看结果

在这里插入图片描述

现在便可以看到新建的数据库了

2.插入数据insert

最基本的插入数据如下

db.表.命令({对象1:“值1”,对象2:“值2”}) //增删改查基本就这个语法

db.collection1.insert({x:1,y:"插入的第一条数据"})
db.collection1.insert({x:1,y:"插入的第二条数据"})

//当然mongoDB还支持js语法

for(let i=0;i<10;i++){
  db.collection1.insert({inum:"i的值是"+i,p:"p"})
}

学过关系型的数据库的可能会问,为什么没有建立 列 就可以直接插入 而且 里面有没有这个列都可以插入,

mongoDB是关系型数据库 有疑问 去补充相关的知识,这里就不多讲了 ,对象型数据库比较任性。

那么我们查看数据库的内容

db.collection1.find()//这就是一条查询语句

在这里插入图片描述

学过js或者前端 的同学这种查询结果会很熟悉 当然也可以已表的形式查看 右下角点一点

在这里插入图片描述

是不是又很熟悉了

我们发现mongoDB会自动给我们创建一个_id的唯一主键。

我们也可以插入数组

db.collection1.insert({arr:[1,2,3,5]})

3.查询数据find

刚才我们在上面已经使用过一次查询了,查询所有。但是我们需要的是更切合实际的查询

按照条件查询:例如查询x=1的数据

db.collection1.find({x:1})

查询p=“p” ,inu=“i的值是5”的数据,查询参数与参数 之间 用 “ ,” 隔开

db.collection1.find({p:"p",inum:"i的值是5"})

筛选查询

我们先准备几条数据

for(let i=0;i<10;i++){
  db.collection1.insert({x:i,y:"插入的第一条数据"})

}

然后做筛选查询 {${函数:“值”}}

db.collection1.find({x:{$gt:5}})//查询 x>5   

gt(greater than)大于;

lt(less than)小于;

gte(greater then equal)大于等于;

lte(less than equal)小于等于;

ne(not equal)不等于

我们也可以查询数组中的数据

例如:

db.collection1.find({arr:{$all:[1,2]}});

{$all:[1,2]} 包含1,并且包含2

{$in:[1,2]} 包含1。或者包含2

{$nin:[1,2]} 不包含,并且不包含

{$or:[{参数:“值”},{参数:值}]} 或者

{$nor:[{参数:“值”},{参数:“值”}]} 既不包含 或者不包含

分页:

db.collection1.find({x:2}).skip(0).limit(3)  //skip默认值为0  查询 x:2 的前三条数据

排序:

db.collection1.find().sort({x:-1}) //按照x反排序  1 为小到大 -1  大到小 

模糊查询:

db.collection1.insert({y:"一二三四五"});
db.collection1.insert({y:"一三四五"});
db.collection1.find({y:/二/})            //  含有 "二" 字  返回所有查询结果
db.collection1.find({title:/^一/})       // 以一开头
db.collection1.find({title:/五$/})       //以五结尾

4.更新updata

更新某条数据

db.collection1.update({x:1},{x:2,y:"yyyy"})//查询该表的数据  将x为1 的数据修改为 x:2                                                                                     //y:"yyyy"
//这种更新只会更新查询到的第一条数据 

更新查询的所有数据,

我们多次执行 db.collection1.insert({x:1,y:“插入的第一条数据”}) 作为案例

//如果在参数的最后加上{multi:true} 将需要修改的数据用{$se:{ }} 包裹起来 则会更新所有的查询的数据
db.collection1.update({x:1},{$set:{x:2,y:"yyyy"}},  {multi:true})
//执行完更新数据我们查询以下看结果
db.collection1.find()

查询不到 添加

db.collection1.update({x:2},{$set:{x:1,y:"y222"}}, 1,1) 
//表示合筛选条件的话是否全部更改,默认为0只改第一条,改为1后表示全部更改
第3个参数1表示如果没有符合条件的记录是否新增一条记录,1表示新增,0表示不新增

也可以通过save

db.collection1.save({_id:"5bcad4cf81695a1934004061",x:2,y:"111"})

使用save 最好使用唯一主键来做修改的前提条件

5.删除remove

一般来说,删除数据是不会在真正的实际开发中去使用的 而是 添加一个字段 比如hide 字段 设置 该字段的值为boolen 在查询是 我们会额外加上这个字段=true,在不需要让用户看见的时候设置为false 那么便查询不到

remove是真正的将数据从数据库给删除,可能极少使用但是还是要会

db.collection1.remove({x:1})//删除x:1 的数据 

6.索引 index

提供强大的搜索功能

mongo默认为每条数据的_id字段建索引

db.collection1.ensureIndex({f:1});//为f字段建普通索引

db.collection1.dropIndex({g:1});//删除g字段的索引

db.collection1.ensureIndex({k:1},{unique:true});//为k字段建唯一索引,在为字段建了唯一索引后就不能再添加相同值的记录了

db.collection1.ensureIndex({
​ “article”: “text”
}) //创建全文索引 字段 article 索引名:text

例子:

db.imooc_collection.insert({
    "article": "aa"
})
db.imooc_collection.insert({
    "article": "aa bb cc dd ee"
})
db.imooc_collection.insert({
    "article": "aa  c  ddada  ee"
})
db.imooc_collection.insert({
    "article": "aa bb cc dd ff"
})
db.imooc_collection.insert({
    "article": " cc dd ee"
})
db.imooc_collection.insert({
    "article": " bb aa cc aa"
})


db.imooc_collection.find({
    $text: {
        $search: "aa"
    }
}) //包含aa
db.imooc_collection.find({
    $text: {
        $search: "aa bb cc"
    }
})//用 空格 表示 aa 或bb 或cc
db.imooc_collection.find({
    $text: {
        $search: "aa bb -cc"
    }
})//- 表示 aa bb 中不含cc的   
db.imooc_collection.find({
    $text: {
        $search: " \"aa\" \"bb\"  \"cc\" "
    }
})//aa bb cc 都同时包含   但是 \"需要转义 

//相似查询  
db.imooc_collection.find({
    $text: {
        $search: "aa b"
    }
})

db.imooc_collection.find({
    $text: {
        $search: "aa bb"
    }
}, {
    score: {
        $meta: "textScore"
    }
}).sort({
    score: {
        $meta: "textScore"
    }
}) //查询相似的 并且 按照相似度 排序大到小

学习了2天mongoDB 基础的知识总结 , 后续会在帖子中更新… 学过关系型数据库的同学可能会有点难理解,包括为什么要使用mongoDB,和mysql这种主流数据库的区别,这些东西都需要去了解,才能更好的应用mongoDB,以及其他主流高效的数据库

猜你喜欢

转载自blog.csdn.net/qq_40859018/article/details/83215197