目录
1 软件环境
2 基本命令详解
2.1 连接MongoDB
2.2 查看帮助命令
2.3 切换DB
2.4 查看DB下的集合
2.5 创建集合
2.6 插入数据
2.7 查询操作
2.8 修改操作
2.8.1 UPDATE操作方法
2.8.2 UPDATE操作演示
2.9 删除操作
2.9.1 DELETE操作方法
2.9.2 DELETE操作演示
使用的软件分别为:
1)直接进行访问
在刚安装完MongoDB数据库后,未创建用户前,可以通过mongo命令直接对数据库进行访问:
[mongod@strong ~]$ mongo
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
2)通过身份认证访问
当创建了数据库用户后,使用用户名、密码进行访问,默认端口为27017:
[mongod@strong ~]$ mongo 192.168.56.102:27017/admin -uroot -p
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
scott 0.000GB
1)查看mongod帮助
[mongod@strong ~]$ mongod --help.
2)查看mongo帮助
> help
> use mydb
> show collections
1)使用createCollection创建集合
> db.createCollection("students")
该方法是显式创建一个集合,若集合不存在,在插入时也会自动创建对应的集合。
2)insert操作自动创建集合
> db.emp.insert({id:7369,name:"Smith"})
1)插入单条或多条数据
> db.students.insert({name:"S1",age:25,gender:"M",class:"C1",score:95})
WriteResult({ "nInserted" : 1 })
该指令可以插入一个或多个文档
> db.students.insert([{name:"S4",age:18,gender:"F",class:"C1",score:75},{name:"S5",age:18,gender:"F",class:"C2",score:75}])
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
2)插入单条数据
> db.students.insertOne({name:"S6",age:21,gender:"M",class:"C2",score:100})
{
"acknowledged" : true,
"insertedId" : ObjectId("5d6a768acdbcfed2e09206c7")
}
3)插入多条数据
> db.students.insertMany([{name:"S2",age:18,gender:"M",class:"C1",score:85},{name:"S3",age:18,gender:"F",class:"C1",score:85}])
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5d6a74e4cdbcfed2e09206c3"),
ObjectId("5d6a74e4cdbcfed2e09206c4")
]
}
4)循环插入多条数据
> for(var i=1;i<=20;i++) db.emp.insert({id:i,name:"Test"+i})
WriteResult({ "nInserted" : 1 })
1)查询全部数据
> db.students.find()
> db.students.find({})
2)查询指定条件的数据
> db.students.find({name:"S1"})
3)查询指定数据,并显示具体的列
> db.students.find({name:"S1"},{age:1,score:1})
4)查询年龄大于20的信息
> db.students.find({age:{$gt:20}})
5)查询年龄大于20小于25的信息
> db.students.find({age:{$gt:20,$lt:25}})
6)查询班级是C1或C3的信息
> db.students.find({class:{$in:["C1","C3"]}})
7)查询年龄大于20且成绩高于90的信息
> db.students.find({age:{$gt:20},score:{$gt:90}})
8)查询结果进行排序(升序)
> db.students.find({class:{$in:["C1","C3"]}}).sort({score:1})
9)限制返回的结果集
> db.students.find({class:{$in:["C1","C3"]}}).sort({score:1}).limit(2)
10)跳过记录,返回结果
> db.students.find({class:{$in:["C1","C3"]}}).sort({score:1}).limit(2).skip(1)
11)查询记录总数
> db.students.find().count()
12)使用游标返回结果
> var stus=db.students.find({score:{$gt:80}})
> while(stus.hasNext()) printjson(stus.next())
1)db.collection.updateOne()
更新至多一个满足过滤条件的文档,即使有多个文档满足过滤条件。
语法:
db.collection.replaceOne(
,
,
{
upsert: ,
writeConcern: ,
collation:
}
)
2)db.collection.updateMany()
更新满足条件的所有文档。
语法:
db.collection.updateMany(
,
,
{
upsert: ,
writeConcern: ,
collation: ,
arrayFilters: [ , ... ]
}
)
3)db.collection.replaceOne()
取代满足条件的一个文档,即使有多个文档满足条件。
语法:
db.collection.replaceOne(
,
,
{
upsert: ,
writeConcern: ,
collation:
}
)
4)db.collection.update()
更新满足条件的文档,默认只更新一个文档,可以通过指定multi选项为True更新多个文档。
语法:
db.collection.update(
,
,
{
upsert: ,
multi: ,
writeConcern: ,
collation: ,
arrayFilters: [ , ... ],
hint: // Available starting in MongoDB 4.2
}
)
1)初始化数据集合
> db.inventory.insertMany( [
... { item: "canvas", qty: 100, size: { h: 28, w: 35.5, uom: "cm" }, status: "A" },
... { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
... { item: "mat", qty: 85, size: { h: 27.9, w: 35.5, uom: "cm" }, status: "A" },
... { item: "mousepad", qty: 25, size: { h: 19, w: 22.85, uom: "cm" }, status: "P" },
... { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "P" },
... { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
... { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
... { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" },
... { item: "sketchbook", qty: 80, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
... { item: "sketch pad", qty: 95, size: { h: 22.85, w: 30.5, uom: "cm" }, status: "A" }
... ] );
2)db.collection.updateOne()
> db.inventory.updateOne({item:"paper"},{$set:{status:"P"}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.inventory.updateOne({},{$set:{"size.h":30}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
3)db.collection.updateMany()
> db.inventory.updateMany({qty:{$gt:80}},{$set:{"size.uom":"cm"}})
{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 1 }
4)db.collection.replaceOne()
> db.inventory.replaceOne({item:"paper"},{item:"paper_test",qty:90,location:"Shenzhen",create_date:ISODate()})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
该操作替换除了_id之外整个文档内容。
5)db.collection.update()
> db.inventory.update({qty:{$gte:80}},{$set:{status:"N"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.inventory.update({qty:{$gte:80}},{$set:{status:"N"}},{multi:true})
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 3 })
1)db.collection.deleteMany()
删除满足条件的文档,删除所有文档可指定空或者{}。
语法:
db.collection.deleteMany(
,
{
writeConcern: ,
collation:
}
)
2)db.collection.deleteOne()
删除满足条件的一个文档,即使有多个文档满足条件。
语法:
db.collection.deleteOne(
,
{
writeConcern: ,
collation:
}
)
3)db.collection.remove()
从集合中移除文档,有两种用法,移除所有文档或一个文档。
语法:
db.collection.remove(
,
)
1)db.collection.deleteMany()
> db.inventory.deleteMany({qty:{$gte:80}})
{ "acknowledged" : true, "deletedCount" : 4 }
2)db.collection.deleteOne()
> db.inventory.deleteOne({status:"N"})
{ "acknowledged" : true, "deletedCount" : 1 }
3)db.collection.remove()
> db.inventory.remove({},{justOne:true})
WriteResult({ "nRemoved" : 1 })
> db.inventory.remove({})
WriteResult({ "nRemoved" : 4 })