- 安装Windows版MongoDB
- 使用MongoDB对数据进行增删改查操作
- 比较有无索引时的查询性能
创建一个数据库
使用use命令创建或切换数据库
use <数据库名>
use mytest //创建名为myteset的数据库
查看数据库
若自定义数据库没有插入记录,则用户在查看数据库时不会显示出来,只有插入数据的数据库才会显示相应信息。
show dbs
创建一个集合
db.createCollection(<集合名>, options)
- capped 若为true,则启用封闭的集合。
//达到其最大时自动覆盖最旧的 - size 指定上限集合的最大大小
- max 指定上限集合中允许的最大文档数
capped若指定true,则还需指定size参数
db.createCollection("mycollection")
插入多条文档记录到集合中
若指定文档的_id字段,值_id必须在集合中唯一。
若存在某条待插入文档和集合的某文档_id相同的情况,_id相同的文档与后续文档都将不再插入。
db.mycollection.insert(
{_id:1,name:"red",age:20}
)
insertOne()插入一条文档
db.mycollection.insertOne(
{name:"red",age:22,status:"A",}
);
insertMany()插入多条文档——无需具有相同字段
db.mycollection.insertMany(
[
{name:"red",age:18,grade:98,},
{name:"green",age:22,grade:90,}
{name:"blue",age:18,grade:95,},
{name:"black",age:18,grade:94,},
{name:"white",age:18,grade:76,}
]
)
writeConcern: 表示自定义写出错的级别,出错捕捉机制
ordered:指定是否有序写入,默认 true,有序插入
db.mycollection.insertMany(
[
{name:"black",age:18,grade:94,},
{name:"white",age:18,grade:76,}
],
{
//writeConcern: <document>,
ordered: true
}
)
修改一个文档的全部内容
db.mycollection.save(
{
"_id":ObjectId("5f996f7ee0474b49519cecfb"),
"name":"haha",
"age":32,
"grade":35
}
)
对多个文档统一字段内容进行修改
db.collection.update(
<query>, //参数设置查询条件
<update>, //更新操作符
Upsert, //若不存在update记录,是否插入。true插入,默认false不插入
multi, //默认false,更新找到的第一条。true把按条件查询出来的记录全部更新
writeConcern, //出错级别
collation //指定语言
)
> db.mycollection.update(
... {item:"book"},
... {$set:{"name":"xiao"}},
... {upsert:true}
... )
db.mycollection.update(
{age:18},
{$set:{grade:100}},
false,
true // 全部修改
)
查询数据库中满足指定条件的文档
db.mycollection.find(
{
grade:33
}
)
在集合中插入1000个文档,执行find.explain()命令,记录分析结果
for(var i=1;i<=2000;i++){
db.second.insert({"id":i+1,"name":"gbh"+i,age:21})
}
输出:WriteResult({ “nInserted” : 1 })
对文档中的一个字段创建索引,对该字段进行find.explain()命令,记录分析结果;
> db.first.createIndex({age:18})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.first.find({age:33}).explain()
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "gbh2.first",
"indexFilterSet" : false,
"parsedQuery" : {
"age" : {
"$eq" : 33
}
},
"queryHash" : "3838C5F3",
"planCacheKey" : "041C5DE3",
"winningPlan" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"age" : 18
},
"indexName" : "age_18",
"isMultiKey" : false,
"multiKeyPaths" : {
"age" : [ ]
},
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 2,
"direction" : "forward",
"indexBounds" : {
"age" : [
"[33.0, 33.0]"
]
}
}
},
"rejectedPlans" : [ ]
},
"serverInfo" : {
"host" : "DESKTOP-RNU15KQ",
"port" : 27017,
"version" : "4.4.1",
"gitVersion" : "ad91a93a5a31e175f5cbf8c69561e788bbc55ce1"
},
"ok" : 1
}
> db.first.find({age:18}).explain()
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "gbh2.first",
"indexFilterSet" : false,
"parsedQuery" : {
"age" : {
"$eq" : 18
}
},
"queryHash" : "3838C5F3",
"planCacheKey" : "041C5DE3",
"winningPlan" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"age" : 18
},
"indexName" : "age_18",
"isMultiKey" : false,
"multiKeyPaths" : {
"age" : [ ]
},
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 2,
"direction" : "forward",
"indexBounds" : {
"age" : [
"[18.0, 18.0]"
]
}
}
},
"rejectedPlans" : [ ]
},
"serverInfo" : {
"host" : "DESKTOP-RNU15KQ",
"port" : 27017,
"version" : "4.4.1",
"gitVersion" : "ad91a93a5a31e175f5cbf8c69561e788bbc55ce1"
},
"ok" : 1
}
删除多余文档,保留200个文档,对创建索引字段执行find.explain()命 令,记录分析结果
在此基础上删除建立的索引,执行find.explain()命令,记录分析结果
对以上执行结果惊醒统计,制出统计分析比较表,说明比较结论