mongdb学习

docker运行mongdb
 

docker run -it mongo:3.2 mongo --host 172.17.0.1

 

插入数据

db.newBase.insert({"address":"西二旗"})

> db.autoCollection.save(doucument);( doucument为定义的文档)

创建集合

db.createCollection("firstCollection")

字段

类型

描述

capped

布尔

(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
当该值为 true 时,必须指定 size 参数

AutoIndexId

布尔

可选)如为 true,自动在 _id 字段创建索引。默认为 false

Size

数值


(可选)为固定集合指定一个最大值(以字节计)。
如果 capped true,也需要指定该字段。

 

Max

数值

(可选)指定固定集合中包含文档的最大数量。

> db.createCollection("collectionOption",{capped:true,autoIndexId:true,size:61428000,max:10000})

删除集合

db.集合名.drop()

db.col.remove({})

 

 

查看集合数据

db.collection.find(query, projection)

 

  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

 

db.col.find().pretty()

格式化方式显示文档

> db.autoCollection.find()

> db.autoCollection.find({"age":18},{age:1}) 结果集中只返回age一个字段

> db.autoCollection.find({"age":18},{createTime:0}) 0表示不返回createTime字段,0和1不能共用

操作

符号

范例

小于

$lt

db.autoCollection.find({"count":{$lt:12}})

小于等于

$lte

db.autoCollection.find({"count":{$lte:12}})

大于

$gt

db.autoCollection.find({"count":{$gt:12}})

大于等于

$gte

db.autoCollection.find({"count":{$gte:12}})

不等于

$ne

db.autoCollection.find({"count":{$ne:12}})

And

传入多个键值

db.autoCollection.find({"count":{$ne:19},"title":"44"})

 $or

db.autoCollection.find({$or:[{"count":19},{"count":29}]}).pretty()

模糊查询包含

//

> db.autoCollection.find({title:/标/})

模糊查询以什么开头

/^/

> db.autoCollection.find({title:/^标/})

模糊查询以什么结尾

/$/

> db.autoCollection.find({title:/标$/})

返回某字段是某类型的doucument

$type

> db.autoCollection.find({"title":{$type:2}})

> db.autoCollection.find({"title":{$type:'string'}})

返回类型为string的title

取几条

Limit

> db.autoCollection.find().limit(3).pretty()

跳过第几条

Skip

> db.autoCollection.find().limit(3).skip(1).pretty()

排序

Sort

> db.autoCollection.find().sort(count:1}.pretty() 升序

> db.autoCollection.find().sort(count:-1}.pretty() 降序

分组

Group

db.autoCollection.aggregate([{$group:{_id:"$user",num:{$sum:1}}}])

求和

$sum

 

计算平均值

$avg

 

计算最小值

$min

 

计算最大值

$max

 

插入值到一个数组中

$push

 

插入到一个数组中,但不创建副本

$addToSet

 

获取文档第一个

$first

 

获取文档最后一个

$last

 

 

更新数据

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

 

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,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

删除文档

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)
  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 1,则只删除一个文档。
  • writeConcern :(可选)抛出异常的级别。

> db.autoCollection.remove({"title":"44"},1) 删除含条件的1条

数据类型

类型

数字

Double

1

String

2

Object

3

Array

4

Binary data

5

Object id

7

Boolean

8

Date

9

Null

10

Regular Expression

11

javaScript

13

Symbol

14

JavaScript(with scope)

15

32-bit integer

16

Timestamp

17

64-bit integer

18

Min Key

255

Max key

127

创建索引

> db.autoCollection.createIndex({"count":1})  1 -1 表示升序降序

管道操作符

管道在UnixLinux中一般用于将当前命令的输出结果作为下一个命令的参数。

操作

描述

实例

$project

修改输入文档的结构,可以用来重命名,增加或删除域,也可以用于创建计算结果以及嵌套文档

db.autoCollection.aggregate({$project:{user:1}})

$match

用于过滤数据,只输出符合条件的文档

db.autoCollection.aggregate([{$match:{count:{$gt:12}}}])

$limit

用来限制MongoDB聚合管道返回的文档数

> db.autoCollection.aggregate([{$limit:2}])

$skip

在聚合管道中跳过指定数量的文档,并返回余下的文档

 

$unwind

将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值

 

$group

将集合中的文档分组,可用于统计结果

 

$sort

将输入文档排序后输出

 

$geoNear

输出接近某一地理位置的有序文档

 

时间关键字

  • $dayOfYear: 返回该日期是这一年的第几天(全年 366 天)。
  •  $dayOfMonth: 返回该日期是这一个月的第几天(131)。
  •  $dayOfWeek: 返回的是这个周的星期几(1:星期日,7:星期六)。
  •  $year: 返回该日期的年份部分。
  •  $month 返回该日期的月份部分( 1 12)。
  •  $week 返回该日期是所在年的第几个星期( 0 53)。
  •  $hour 返回该日期的小时部分。
  •  $minute: 返回该日期的分钟部分。
  •  $second: 返回该日期的秒部分(以059之间的数字形式返回日期的第二部分,但可以是60来计算闰秒)。
  •  $millisecond:返回该日期的毫秒部分( 0 999)。
  •  $dateToString { $dateToString: { format: , date: } }

 

使用docker启动mongdb副本

    1. 使用docker管理容器
  • docker run --name mongo_p -idt -p 28017:28017 mongo:latest  /bin/bash -c 'mongod --replSet replset0'
  • docker run --name mongo_s1 -idt mongo:latest  /bin/bash -c 'mongod --replSet replset0'
  • docker run --name mongo_s2 -idt mongo:latest  /bin/bash -c 'mongod --replSet replset0'

 

 

config = { _id:"replset0", members:[{_id:0,host:"172.17.0.2:27017"},{_id:1,host:"172.17.0.3:27017"},{_id:2,host:"172.17.0.4:27017"}]}

    1.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值