基础语法和命令(相当于关系型数据库里的sql)

操作数据库

“show dbs” 命令可以显示所有数据的列表。
image.png
执行 “db” 命令可以显示当前数据库对象或集合。
image.png
运行”use”命令,可以连接到一个指定的数据库。
image.png
以上实例命令中,”local” 是你要链接的数据库。

特殊数据库

  • admin: 从权限的角度来看,这是”root”数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
  • local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
  • config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

    连接

    连接本地数据库服务器,端口是默认的。
    1. mongodb//localhost
    2. //若连接时不指定数据库,则默认打开 test 数据库。
    使用用户名username,密码password登录localhost的admin数据库。
    1. mongodb://username:password@localhost
    2. //admin数据库可省略不写
    使用用户名username,密码password登录localhost的baz数据库。
    1. mongodb://username:password/baz

    创建数据库

    MongoDB 创建数据库的语法格式如下:如果数据库不存在,则创建数据库,否则切换到指定数据库。
    1. use DATABASE_NAME
    以下实例我们创建了数据库 hello:
    1. use helo//创建或者进入指定数据库
    2. db//查看当前数据库
    3. show dbs//查看所有数据库
    我们刚创建的数据库 hello并不在数据库的列表中, 要显示它,我们需要向 hello 数据库插入一些数据
    1. db.hello.insert({"name":"jyy"})
    2. //集合只有在内容插入后才会创建!
    3. //就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
    4. //如果你没有创建新的数据库,集合将存放在 test 数据库中。

    删除数据库

    删除数据库

    MongoDB 删除数据库的语法格式如下:
    1. db.dropDatabase()
    2. //表示删除当前数据库,默认为 test数据库
    以下实例我们删除了数据库 hello。
    1. show dbs
    2. use hello
    3. db.dropDatabase()
    4. show dbs

    创建集合

    MongoDB 中使用 createCollection() 方法来创建集合
    1. db.createCollection(name,options)
    2. //name: 要创建的集合名称
    3. //options: 可选参数, 指定有关内存大小及索引的选项
    options 可以是如下参数:
    image.png

    删除集合

    集合删除语法格式如下
    1. db.collection.drop()
    以下实例删除了 hello数据库中的集合 site
    1. use hello
    2. db.createCollection("user")//先创建
    3. show tables //show collections
    4. db.user.drop()
    5. show tables

    操作文档

    数据结构:和 JSON 基本一样。
    存储形式:在集合中的数据都是 BSON 格式。(BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。)

    插入文档

    MongoDB 使用 insert() 或 save() 方法向集合中插入文档
    1. db.COLLECTION_NAME.insert(document)
    2. //若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,
    3. //不保存当前数据
    4. db.COLLECTION_NAME.save(document)
    5. //如果 _id 主键存在则更新数据,如果不存在就插入数据。
    6. //该方法新版本中已废弃
    7. //可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
    以下文档可以存储在 MongoDB 的 hello数据库 的 col 集合中:
    1. db.col.insert({title:"mongodb插入文档",
    2. by:"jyy"
    3. })
    查看已插入文档:
    1. db.col.find()

    更新文档

    MongoDB 使用 update()save() 方法来更新集合中的文档。
    update() 方法用于更新已存在的文档。
    格式:
    1. db.collection.update(
    2. <query>,// update的查询条件,类似sql update查询内where后面的
    3. <update>,//update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    4. {
    5. upsert: <boolean>,//可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入
    6. multi: <boolean>,//可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
    7. writeConcern: <document>//可选,抛出异常的级别。
    8. }
    9. )
    例子:
    1. db.col.update({title:"mongodb插入文档"},{$set:{title:"mongodb"}})//只更新第一条
    2. db.col.update({title:"mongodb插入文档"},{$set:{title:"mongodb"}},{multi:true})//更新所有
    save()方法
    格式:
    1. db.collection.save(
    2. <document>,// 文档数据。
    3. {
    4. writeConcern: <document>
    5. }
    6. )
    1. db.col.save({title:"mongodb",
    2. by:"hhh"
    3. })
    更多实例(暂时没用过,不了解)
    1. db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );//只更新第一条记录:
    2. db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );//全部更新
    3. db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );//只添加第一条
    4. db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );//全部添加进去
    5. db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );//全部更新
    6. db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );//只更新第一条

    删除文档

    MongoDB remove() 函数是用来移除集合中的数据
    格式:
    1. db.collection.remove(
    2. <query>,//(可选)删除的文档的条件。
    3. <justOne>//可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档
    4. )
    5. //如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
    6. db.collection.remove(
    7. <query>,
    8. {
    9. justOne: <boolean>,
    10. writeConcern: <document>//(可选)抛出异常的级别。
    11. }
    12. )
    示例:
    1. db.col.remove({'title':'MongoDB'})//删除指定
    2. db.col.remove({})//删除所有

    查询文档

    MongoDB 查询文档使用 find() 方法。
    1. db.collection.find(query, projection)
    2. //query :可选,使用查询操作符指定查询条件
    3. //projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
    如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下
    1. db.col.find().pretty()

    MongoDB 与 RDBMS Where 语句比较

    如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:
    image.png

    AND

    MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
    1. db.col.find({key1:value1, key2:value2}).pretty()

    OR

    MongoDB OR 条件语句使用了关键字 $or,语法格式如下:
    1. db.col.find(
    2. {
    3. $or: [
    4. {key1: value1}, {key2:value2}
    5. ]
    6. }
    7. ).pretty()