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,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 |
AutoIndexId | 布尔 | 可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
Size | 数值 |
|
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 表示升序降序
管道操作符
管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
操作 | 描述 | 实例 |
$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 | 输出接近某一地理位置的有序文档 |
|
时间关键字
|
使用docker启动mongdb副本
-
- 使用docker管理容器
|
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"}]}