天天看点

MongoDB 命令1. MongoDB 的基本操作2. MongoDB 集合数据操作(CURD)

1. MongoDB 的基本操作

-- 查看数据库
sd

-- 切换数据库 如果没有对应的数据库则创建
use 数据库名

-- 创建集合
db.createCollection("集合名")

-- 查看集合
show tables
show collections

-- 删除集合
db.集合名.drop()

--  删除当前数据库
db.dropDatabase()
           

2. MongoDB 集合数据操作(CURD)

2.1 数据添加

  • 插入单条数据 db.集合名.insert(文档)

    文档的数据结构和

    JSON

    基本一样。

    所有存储在集合中的数据都是

    BSON

    格式。

    BSON

    是一种类

    json

    的一种二进制形式的存储格式,简称

    Binary JSON

  • 例子

    db.resume_preview.insert({name:"张晓峰",birthday:new ISODate("2000-07- 01"),expectSalary:15000,gender:0,city:"bj"})

    没有指定

    _id

    这个字段系统会自动生成,也可以指定

    _id

    _id

    类型是

    ObjectId

    类型是一个

    12

    字节

    BSON

    类型数据,有以下格式:
    • 4

      个字节表示时间戳

      ObjectId("对象Id字符串").getTimestamp()

      来获取
    • 接下来的

      3

      个字节是机器标识码
    • 紧接的两个字节由进程

      id

      组成(

      PID

    • 最后三个字节是随机数
  • 插入多条数据

    db.集合名.insert([文档,文档])

2.2 数据查询

2.2.1 比较条件查询

db.集合名.find(条件)

操作 条件格式 例子 RDBMS 中的条件
等于 {key:value} db.col.find({字段名:值}).pretty() where 字段名 = 值
大于 {key:{$gt:value}} db.col.find({字段名:{$gt:值}}).pretty() where 字段名 > 值
小于 {key:{$lt:value}} db.col.find({字段名:{$lt:值}}).pretty() where 字段名 < 值
大于等于 {key:{$gte:value}} db.col.find({字段名:{$gte:值}}).pretty() where 字段名 >= 值
小于等于 {key:{$lte:value}} db.col.find({字段名:{$lte:值}}).pretty() where 字段名 <= 值
不等于 {key:{$ne:value}} db.col.find({字段名:{$ne:值}}).pretty() where 字段名 != 值

2.2.2 逻辑条件查询

  • and

    条件

    MongoDB

    find()

    方法可以传入多个键(

    key

    ),每个键(

    key

    ) 以逗号隔开,即常规

    SQL

    AND

    条件

    db.集合名.find({key1:value1, key2:value2}).pretty()

  • or

    条件

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

  • not

    条件

    db.集合名.find({key:{$not:{$操作符:value}}).pretty()

2.2.3 分页查询

db.集合名.find({条件}).sort({排序字段:排序方式})).skip(跳过的行数).limit(一页显示多少数据)

2.3 数据更新

$set :设置字段值
$unset :删除指定字段
$inc:对修改的值进行自增

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

参数说明:

  • query

    :

    update

    的查询条件,类似

    sql update

    查询内

    where

    后面的。
  • update

    update

    的对象和一些更新的操作符(如

    $set,$inc...

    )等,也可以理解为

    sql update

    set

    后面的
  • upsert

    可选,这个参数的意思是,如果不存在

    update

    的记录,是否插入

    objNew

    true

    为插入,默认 是

    false

    ,不插入。
  • multi

    可选,

    MongoDB

    默认是

    false

    ,只更新找到的第一条记录,如果这个参数为

    true

    ,就把按条件查 出来多条记录全部更新。
  • writeConcern

    可选,用来指定

    mongod

    对写操作的回执行为,比如写的行为是否需要确认。

    举例:

    db.集合名.update({条件},{$set:{字段名:值}},{multi:true})

writeConcern

包括以下字段:

{ w: <value>, j: <boolean>, wtimeout: <number> }

  • w:

    指定写操作传播到的成员数量

    比如:

    w=1

    (默认):则要求得到写操作已经传播到独立的

    Mongod

    实例或副本集的

    primary

    成员的确认

    w=0

    :则不要求确认写操作,可能会返回

    socket exceptions

    networking errors

    w="majority"

    :要求得到写操作已经传播到大多数具有存储数据具有投票的(

    data-bearing voting

    )成员(也就是

    members[n].votes

    值大于 的成员)的确认
  • j:

    要求得到

    Mongodb

    的写操作已经写到硬盘日志的确认

    比如:

    j=true

    :要求得到

    Mongodb

    (

    w

    指定的实例个数)的写操作已经写到硬盘日志的确认。

    j=true

    本身并不保证 因为副本集故障而不会回滚。
  • wtimeout

    :指定

    write concern

    的时间限制,只适用于

    w>1

    的情况

    wtimeout

    在超过指定时间后写操作会返回

    error

    ,即使写操作最后执行成功,当这些写操作返回时,

    MongoDB

    不会撤消在

    wtimeout

    时间限制之前执行成功的数据修改。

    如果未指定

    wtimeout

    选项且未指定

    write concern

    级别,则写入操作将无限期阻止。 指定

    wtimeout

    值为 等同于没有

    wtimeout

    选项。

2.4 数据删除

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

参数说明:

  • query

    :(可选)删除的文档的条件。
  • justOne

    : (可选)如果设为

    true

    1

    ,则只删除一个文档,如果不设置该参数,或使用默认值

    false

    ,则删除所有匹配条件的文档。
  • writeConcern

    :(可选)用来指定

    mongod

    对写操作的回执行为。

继续阅读