zoukankan      html  css  js  c++  java
  • 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索引的管理操作

     

     

     

     

     

     

     

  • 相关阅读:
    recon-ng打开后显示No modules enabled/installed
    mysql的floor()报错注入方法详细分析
    视频合并时使用python批量修改文件名
    ThinkPHP5框架引入的css等外部资源文件没有生效
    用session实现的用户登陆,客户端是怎样获取到cookie信息的
    关于Linux系统下基于Tomcat部署和升级war包的详细过程
    nginx代理的页面性能优化大全
    linux下MySQL数据库的定时备份与定时删除
    关于linux查询内存,CPU,存储空间和日志查询的的常用命令及参数讲解
    linux 查看cpu核心数
  • 原文地址:https://www.cnblogs.com/mabaoying/p/12546525.html
Copyright © 2011-2022 走看看