Document

MongoDB学习(二、基本常用命令)

1.数据库操作

1.1选择和创建数据库的语法格式:

use 数据库名称

如果数据库不存在则自动创建

查看有权限查看的所有数据库命令:

show dbs或show databases

注意:在MongoDB中,集合只有在内容插入后才会创建!就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

查看当前正在使用的数据库命令:

db

MongoDB中默认的数据库为test,如果你没有选择数据库,集合将存放在test数据库中。

 

 1.2数据库的删除

MongoDB删除数据库的语法格式如下:

db.dropDatabase()

提示:主要用来删除已经持久化的数据库,删除的是当前所在的库。

2.集合操作

集合,类似于关系型数据库中的表。

2.1可以显示的创建,也可以隐式的创建。

 2.1.1.集合的显式创建

基本语法格式:

db.createCollection(name)

参数说明:name为要创建的集合名

2.1.2集合的隐式创建

当向集合中插入一个文档,如果文档不存在,就会自动创建集合。

2.2 查询当前库中的所有集合

基本语法格式:

show collections

2.3 集合的删除

基本语法格式:

db.collection.drop()

如果成功删除选定集合,则返回true,否则返回false

3.文档基本crud

文档的数据机构和sjon基本一样。所有存储在集合中的数据都是BSON格式。

3.1文档的插入

 3.11单个文档插入

使用insert()或save()方法向集合中插入文档。语法如下:

db.collection.insert(
<document or array of documents>,
{
  writeConcern:<document>,
  ordered:<boolean>
}
)

参数

示例:

 

返回WriteResult({"nInserted" : 1}),则说明插入一条数据成功。

 提示:

1.集合如果不存在,则会隐式创建

2.mongo中的数字,默认情况下是duuble类型,如果要存整型,必须使用函数NumberInt(整型数字),否则取出来就有问题了。

3.插入当前日期使用new Date()

4.插入的数据没有指定_id会自动生成主键值

5.如果某字段没值,可以赋值为null,或不写该字段。

3.1.2批量插入

语法如下:

db.collection.insertMany(
[<document 1>,<document 2>,...],
{
    writeConcern:<document>,
    ordered:<boolean>
}
)

示例:

 

 3.2文档的基本查询

 查询数据的语法格式如下:

db.collection.find(<query>,[projection]) 

参数:

 3.2.1基本查询

 示例1:查询集合中的所有文档

db.collection.find()或db.collection.find({})

 这里每条文档会有个交_id的字段,这个相当于我们原来关系型数据库中表的主键,当你在插入文档记录时没有指定该字段,MongoDB会自动创建,其类型是ObjectID类型。

示例2:条件查询集合中的文档

在find()中添加参数即可,参数也是json格式,如下:

db.collection.find({"key":value})

 如果需要返回符合条件的第一条数据,我们可以使用findOne命令来实现,语法跟find一样

3.2.2投影查询

  如果要查询机构返回部分字段,则需要使用投影查询(不现实所有字段,只显示指定的字段)。

 如果查询全部,只显示部分字段,该字段用json格式1表示。默认_id要显示,如果想排除_id则跟上_id:0

3.3文档的分页查询  

 3.3.1统计查询

统计查询试用版count()方法,语法如下:

db.collection.count(query,options) 

 参数:

(1)统计所有记录数

统计comment集合的所有的记录数

db.collection.count()

(2)按条件统计记录数

  例如:统计id为1的记录数

 3.3.2 分页列表查询

  可以使用limit()方法来读取指定数量的数据,使用skip()方法来跳过指定数量的数据。

基本语法如下:

db.collection.find().limit(number1).skip(number2) 
skip和limit两个函数可以换位置。相当于mysql的limit(number2,number1)

1、如果想返回指定的记录,可以在find后面用limit来返回结果(top N),默认前20条

db.collection.find().limit(5);//返回前5条记录数。

 2、skip方法同样接受一个数字参数作为跳过的记录条数,(前N个不要),默认是0

db.collection.find().skip(3);//跳过前3条记录,返回后面的记录。

 3.分页查询

db.collection.find().limit(number1).skip(number2) //跳过前number2条记录,返回number1条记录

 4.排序查询

sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序,-1为降序。

 语法如下:

db.collection.find().sort({key:1})

3.3.3文档的更多查询

1.正则的复杂条件查询

 

 2.比较查询

 

 3.包含查询

 

 4.条件连接查询

3.4 文档的更新

更新文档的语法:

db.collection.update(query,update,options)
//或
db.collection.update(
<query>,
<update>,
{
   upsert:<boolean>,
   multi:<boolean>,
   writeConcern:<document>,
   arrayFilters:[<filterdocument1>,....],
   hint:<document|string>   //available starting in mongodb 4.2
}
)

示例:

1.覆盖的修改

执行db.comment.update({"_id":"1"},{"name":"xxx"})后,发现除了name字段外其他字段都没见了。

2.局部的修改

为了解决上面问题,使用修改器$set来实现。

执行db.comment.update({"_id":"2"},{$set:{"name":"xxxx"}}),只修改该文档的name字段的值,不会出现其他字段消失。

 

 3.批量修改

例:更新所有cid为1的用户昵称为xxx

//默认只修改第一条数据
db.comment.update({"cid":"1"},{$set:{"name":"xxx"}})
//修改所有符合条件的数据
db.comment.update({"cid":"2"},{$set:{"name":"xxx"}},{multi:true})  

提示:如果不加后面的参数{multi:true},multi默认为false.则只更新符合条件的第一条记录

 3.5 删除文档

删除文档的语法结构:

db.collection.remove(条件)

以下语句可以将数据全部删除,请慎用

db.collection.remove({})

 

 4.索引

 

 

 

 

 

 

 4.3索引的管理操作

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-03-22 19:45  马宝云  阅读(317)  评论(0编辑  收藏  举报