二、MongoDB学习笔记~数据库基本操作

一、数据库操作

  • 新建
use test
  • 查看
db

或者:

show dbs

注意:数据库中如果没有数据,show dbs是不会展示数据的

插入一些数据:

db.test.insert({"name":"lizza"})
  • 删除
-- 查看有哪些库
show dbs
-- 切换数据库
use test1
-- 删除数据库
db.dropDatabase()

二、集合操作

  • 创建集合
db.createCollection(name, options)

参数说明:

  • name: 要创建的集合名称
  • options: 可选参数,指定有关内存大小及索引的选项
字段类型描述
capped布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达当该值为 true 时,必须指定 size 参数。到最大值时,它会自动覆盖最早的文档。
autoIndexId布尔(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size数值(可选)为固定集合指定一个最大值,以千字节计(KB)。如果 capped 为 true,也需要指定该字段。
max数值(可选)指定固定集

示例:

use test
db.createCollection("user")
  • 查看已有集合
show collections

注意:在MongoDB中不需要创建集合,当用户插入一些文档时,MongoDB会自动创建集合

  • 删除集合

语法:

db.collection_name.drop()

示例:

db.test.drop()

三、文档操作

  • 插入文档

语法:

db.collection_name.insert(document)

示例:

db.test.insert({name: 'robert', sex: 'male', age: '18', tags: ['mongodb', 'database', 'NoSQL'], address: {ip: '0.0.0.0', name: '黑龙江佳木斯'}})
  • 查看已插入的文档
db.test.find()

在这里插入图片描述

  • 插入一条
db.test.insertOne({a: 1})
  • 插入多条
db.collection.insertMany({a: 1, b: 2})
  • 更新文档

语法

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query:update的查询条件,类似sql update查询内where后面的内容
  • update: update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的内容
  • upsert: 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入
  • mult:可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
  • writeConcern:可选,抛出异常的级别

示例:

db.test.update({name: 'lizza'}, {$set:{name: 'Lizza'}})
  • 删除文档

语法:

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query:(可选)删除的文档的条件
  • justOne :(可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档
  • writeConcern:(可选)抛出异常的级别

示例:

db.test.remove({name: 'Lizza'})
  • 查询文档

语法:

db.test.find(query, projection)
  • query:可选,使用查询操作符指定查询条件
  • projection:可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)
  • MongoDB与RDBMS Where语句比较
操作格式范例RDBMS中的类似语句
等于{ : }db.col.find({“name” : “robert”}).pretty()where name = ‘robert’
小于{ : {$lt : }}db.col.find({“age” : {$lt: 50}}).pretty()where age < 50
小于或等于{ : {$lte : }}db.col.find({“age” : {$lte : 50}}).pretty()where age <= 50
大于{ : {$gt : }}db.col.find({“age” : {$gt : 50}}).pretty()where age > 50
大于或等于{ : {$gte : }}db.col.find({“age” : {$gte : 50}}).pretty()where age >= 50
不等于{ : {$ne : }}db.col.find({“age” : {$ne:50}}).pretty()where age != 50
  • MongoDB AND条件

MongoDB的find()方法可以传入多个键(key),每个键(key)以逗号隔开,即常规SQL的AND条件

语法格式如下:

db.test.find({key1:value1, key2:value2}).pretty()

  • 示例:
db.test.find({name : 'robert', age : '18'}).pretty()

在这里插入图片描述

  • MongoDB OR条件

MongoDB OR条件语句使用了关键字$or,语法格式如下:

db.test.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

示例:

db.test.find({$or : [{age : '15'}, {age : '18'}]}).pretty()
  • 模糊查询
-- 查询name中包含r的
db.test.find({name : /r/})
-- 查询name中以r开头的
db.test.find({name : /^r/})
-- 查询name中以r结尾的
db.test.find({name : /r$/})
  • MongoDB $type 操作符

$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果

类型数字备注
Double1
String2
Object3
Array4
Binarydata5
Undefined6已废弃。
Objectid7
Boolean8
Date9
Null10
RegularExpression11
JavaScript13
Symbol14
JavaScript(withscope)15
32-bitinteger16
Timestamp17
64-bitinteger18
Minkey255Querywith-1.
Maxkey127

示例:

-- 查询所有结果集
db.test.find().pretty()

在这里插入图片描述

-- 查询name类型为string的数据
db.test.find({name : {$type : 2}})
db.test.find({title : {$type : 'string'}})

在这里插入图片描述

  • Limit方法

如果需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数

语法:

db.collection_name.find().limit(number)
  • Skip方法

skip()方法用来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数

语法:

db.collection_name.find().limit(number).skip(number)

limit()和skip()方法组合使用可以实现分页需求

  • MongoDB排序(sort()方法)

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

语法:

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

示例:

db.test.find().sort({name : 1})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值