MongoDB操作
数据库
use 数据库名 //如果不存在,创建数据库
db //展示当前数据库
show dbs //查看所有数据库(如果新创建的数据库没有显示,则需要在里面插入数据)
集合
db.createColletion("集合名") //创建集合
show collections 或 show tables //查看集合(如果集合里面没有数据,查看不到,需添加数据)
db.createCollection("集合名", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } ) //创建固定集合,空间大小6142800,文档个数大小10000
db.集合名.drop() //删除集合
文档
db.集合名.insert({文档名1:数据1,文档名2,数据2,文档名3,数据3}) //插入文档
db.集合名.insert([{{文档名1:数据1,文档名2,数据2},{{文档名1:数据1,文档名2,数据2}]) //批量插入数据
db.集合.update({文档1:数据1},{$set:{文档1`:数据1`}}) //更新文档
db.集合.save({"_id": ObjectId("主键id"),文档1:数据1,文档2,数据2}) //根据主键更新数据
db.集合.remove({}) //删除全部数据
db.集合.remove({文档:数据}) //删除特定数据
数据
db.test.insert([
{
"title": "MongoDB 教程",
"tags": [
"mongodb",
"database",
"NoSQL"
],
"likes": 110
},
{
"title": "MongoDB",
"tags": [
"mongodb",
"database",
"NoSQL"
],
"likes": 120
},
{
"title": "DD",
"tags": "redis",
"likes": 1000
},
{
"title": "TT",
"tags": "java",
"likes": 1100
},
{
"title": "DD",
"tags": "java",
"likes": 900
},
{
"title": 11,
"tags": "java",
"likes": 900
},
{
"title": "DD",
"tags": "java",
"likes": 900
}
])
find()查找方法
db.集合.find({文档:数据}) //查询特定数据
$lt //小于
$lte //小于等于
$gt //大于
$gte //大于等于
$ne //不等于
db.集合.find({文档:{$lte:特定值}}) //查找小于等于特定值的数据
db.集合.find({文档1:数据1,文档2:数据2}) //and联合使用,查找满足文档1和文档2条件的数据
db.集合.find({文档1:数据1,$or:[{文档2:数据2,文档3,数据3}]}) //and和or联合使用,查找where 文档1 = 数据1 and (文档2 = 数据2 or 文档3 = 数据3)
MongoDB中的数据类型
类型 | 数字 |
---|
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 |
$type操作符
db.集合.find({文档:{$type:数据类型}}) //查询文档为此类数据类型的数据
db.集合.find({文档:{$type:数据类型代表的数字}})
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6eedc63194dd9bdc2fae7f8ee9478d93.png)
limit与skip方法
db.集合.find().limit(2) //查找并且只展示2条数据
db.集合.find().limit(2).skip(2) //跳过前面2条数据,从第3条数据开始查找并且值展示2条数据
sort方法
1为升序,-1为降序
db.集合.find().sort({文档:1}) //按升序排列
索引 (1创建的索引按升序排列,-1创建的索引按降序排列)
db.集合.createIndex({文档:1}) //创建索引按升序排列
db.集合.createIndex({文档1:1,文档2:-1}) //创建复合索引
db.集合.getIndexes() //查看全部索引
db.集合.totalIndexSize() //查看索引大小
db.集合.dropIndexes() //删除全部索引
db.集合.dropIndex({文档}) //删除指定索引
索引关键字为Date类型,可以利用TTL设置过期时间
db.集合.createIndex({"时间文档": 1},{expireAfterSeconds: 过期时间}) //创建有过期时间的索引
聚合
表达式 | 描述 |
---|
$sum计算总和。 | 计算总和 |
$avg | 计算平均值 |
$min | 获取集合中所有文档对应值得最小值 |
$max | 获取集合中所有文档对应值得最大值 |
$push | 将值加入一个数组中,不会判断是否有重复的值 |
$addToSet | 将值加入一个数组中,会判断是否有重复的值,若相同的值在数组中已经存在了,则不加入 |
$first | 根据资源文档的排序获取第一个文档数据 |
$last | 根据资源文档的排序获取最后一个文档数据 |
表达式 | 描述 |
---|
$project | 修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。 |
$match | 用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作 |
$limit | 用来限制MongoDB聚合管道返回的文档数。 |
$unwind | 将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值 |
$group | 将集合中的文档分组,可用于统计结果 |
$sort | 将输入文档排序后输出 |
$geoNear | 输出接近某一地理位置的有序文档 |
$skip | 在聚合管道中跳过指定数量的文档,并返回余下的文档 |
//常用操作
db.集合.aggregate([{$group:{_id:"$文档"}]) //按文档分组
db.集合.aggregate([{$match:{文档:数据}}]) //获取指定数据文档
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/75febc44f6058b24bad15e79f87fb049.png)