数据库的启动与连接
首先,需要先进入到安装的MongoDB的bin目录下,会有如下这些文件:
bsondump mongod mongoexport mongoimport mongoperf mongos mongotop
mongo mongodump mongofiles mongooplog mongorestore mongostat
注意:这是在Linux下的MongoDB操作!!
进行如下操作:
./mongod --dbpath=/data/db/ --logpath=/usr/local/mongodb/mongodb.log --logappend &
--dbpath指定数据文件路径,--logpath指定日志文件路径,--logappend表示日志追加,&表示后台启动
现在,数据库已经启动了,那么接下来进行连接。(必须要先启动才能够连接!)
进行如下操作:
./mongo
数据库启动并连接成功
创建数据库
#新建数据库,或者切换数据库
> use test
#查看当前正在使用的数据库
> db
#列出所有的数据库,刚创建的数据库不会显示,需要插入数据后才能看到
> show dbs
删除数据库
#删除哪个数据库之前,先 use 数据库
> use test
> db.dropDatabase()
创建集合
#查看已经存在的集合
> show collections
#创建集合,可以是空集合
> db.createCollection("集合名",{})
#或者
> db.集合名.insert({"student":"666"})
删除集合
#db.集合名.drop()
> use student
> show collections
student
system.indexes
test
>db.test.drop()
>show collections
student
system.indexes
插入文档
# db.集合名称.insert(文档)
#插入单个文档
> db.student.insert({name:"小明",age:18,address:"北京"})
#插入多个文档 注意"[]"
> db.student.insert([{name:"李雷",age:17,address:"河南"},{name:"韩梅梅",age:20,address:"河北"}])
#使用save插入文档
#db.集合名.save(文档)
> db.student.save({name:"新之助",age:18,address:"日本"})
#修改指定ID中文档的内容 通过传入的文档替换已有的文档
> db.student.save({_id:ObjectId("5b5abd7d89"),name:"新之助",age:40,address:"日本"})
更新文档
# $inc:在原有的基础上累加后更新
> db.student.find()
{ "_id" : ObjectId("5b5c3173aeca37b391d4c895"), "name" : "小明", "age" : 18, "address" : "北京" }
{ "_id" : ObjectId("5b5c31cfaeca37b391d4c897"), "name" : "李雷", "age" : 20, "address" : "河南" }
{ "_id" : ObjectId("5b5c31ddaeca37b391d4c898"), "name" : "韩梅梅", "age" : 20, "address" : "河北" }
> db.student.update({name:"李雷"},{$inc:{age:20}})
> db.student.find({name:"李雷"})
{ "_id" : ObjectId("5b5c31cfaeca37b391d4c897"), "name" : "李雷", "age" : 40, "address" : "河南" }
# $set:直接更新
> db.student.update({name:"李雷"},{$set:{age:20}})
> db.student.find({name:"李雷"})
{ "_id" : ObjectId("5b5c31cfaeca37b391d4c897"), "name" : "李雷", "age" : 20, "address" : "河南" }
# 当前面条件对应多条文档时,默认更新一条文档
# 若想更新全部,后面添加{multi:true}
> db.student.update({age:20},{$set:{address:"深圳"}},{multi:true})
> db.student.find()
{ "_id" : ObjectId("5b5c3173aeca37b391d4c895"), "name" : "小明", "age" : 18, "address" : "北京" }
{ "_id" : ObjectId("5b5c31cfaeca37b391d4c897"), "name" : "李雷", "age" : 20, "address" : "深圳" }
{ "_id" : ObjectId("5b5c31ddaeca37b391d4c898"), "name" : "韩梅梅", "age" : 20, "address" : "深圳" }
查询文档
# 1 db.集合名.find()
#查询指定列
#name表示查询条件,age和address表示要显示的字段,1表示显示
> db.student.find({name:"李雷"},{age:1,address:1})
{ "_id" : ObjectId("5b5c31cfaeca37b391d4c897"), "age" : 20, "address" : "深圳" }
# 2 以格式化的方式来显示文档
> db.student.find().pretty()
{
"_id" : ObjectId("5b5c3173aeca37b391d4c895"),
"name" : "小明",
"age" : 18,
"address" : "北京"
}
{
"_id" : ObjectId("5b5c31cfaeca37b391d4c897"),
"name" : "李雷",
"age" : 20,
"address" : "深圳"
}
{
"_id" : ObjectId("5b5c31ddaeca37b391d4c898"),
"name" : "韩梅梅",
"age" : 20,
"address" : "深圳"
}
删除文档
# db.集合名.remove()
> db.student.remove({name:"小明"})
WriteResult({ "nRemoved" : 1 })
> db.student.find().pretty()
{
"_id" : ObjectId("5b5c31cfaeca37b391d4c897"),
"name" : "李雷",
"age" : 20,
"address" : "深圳"
}
{
"_id" : ObjectId("5b5c31ddaeca37b391d4c898"),
"name" : "韩梅梅",
"age" : 20,
"address" : "深圳"
}
# > db.student.remove({age:20},{justOne:true}) 只删除满足条件的一条文档
查询条件操作符
#大于
db.集合名.find({age:{$gt:20}}) 查询年龄大于20的
#大于等于
db.集合名.find({age:{$gte:20}}) 查询年龄大于等于20的
#小于
db.集合名.find({age:{$lt:20}}) 查询年龄小于20的
#小于等于
db.集合名.find({age:{$lte:20}}) 查询年龄小于等于20的
#大于等于并小于等于
db.集合名.find({age:{$gte:20,$lte:40}}) 查询年龄大于等于20并且小于等于40的
#等于
db.集合名.find({age:20}) 查询年龄等于20的
#查询满足条件的文档的条数
db.集合名.find().count()
条件查询 and 和 or
#and条件
db.集合名.find({address:"深圳",age:{$gt:16}})
#or条件
db.集合名.find({$or:[{address:"深圳"},{age:{$gt:16}}]})
#and or联合使用
db.集合名.find({$or:[{name:"韩梅梅"},$or:[{address:"深圳"},{age:{$gt:16}}]})
limit 、skip
#查询指定数量的数据
db.集合名.find().limit(3)
#跳过指定数量的数据
db.集合名.find().skip(3)
#skip和limit联合使用
#实现分页的效果
db.集合名.find().skip(3).limit(3)
排序
# 1:升序 -1:降序
db.集合名.find().sort({age:1})
以上就是MongoDB的所有的操作了,欢迎各位的补充。