MongoDB原生语句的使用
查看当前数据库的版本号
db.version()
MongoDB Enterprise > db.version()
4.4.2
查看当前所在数据库
db
MongoDB Enterprise > db
test
查看当前数据库连接的地址
db.getMongo()
MongoDB Enterprise > db.getMongo()
connection to 127.0.0.1:27017
查看所有数据库
show databases/show dbs,数据库中如果没有数据是不会显示的
MongoDB Enterprise > show databases
admin 0.000GB
config 0.000GB
local 0.000GB
切换数据库
use 数据库名称,如果没有这个数据库,会先创建再切入
MongoDB Enterprise > use first_text
switched to db first_text
创建集合
db.createCollection(集合名)
MongoDB Enterprise > db.createCollection("students")
{ "ok" : 1 }
查看集合
show collections/show tables
MongoDB Enterprise > show collections
students
插入文档
db.集合名.insert({“key”:“value”})
db.集合名.save({“key”:“value”})
注:如果想要插入多条数据,可以将多个对象放在一个数组中
db.集合名.insert([{},{},{}])
注:如果插入的数据的集合不存在,会先创建再插入
# 插入5个学生信息,包括姓名,年龄,性别
MongoDB Enterprise > db.students.insert({"name":"zhangsan","age":23,"gender":"男"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.students.insert({"name":"lisi","age":18,"gender":"男"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.students.insert({"name":"wangwu","age":30,"gender":"男"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.students.insert({"name":"xiaohong","age":26,"gender":"女"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.students.insert({"name":"lihua","age":16,"gender":"女"})
WriteResult({ "nInserted" : 1 })
查询数据
db.集合名.find()
MongoDB Enterprise > db.students.find()
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "name" : "zhangsan", "age" : 23, "gender" : "男" }
{ "_id" : ObjectId("5fc7899287ee1122be308b91"), "name" : "lisi", "age" : 18, "gender" : "男" }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
{ "_id" : ObjectId("5fc789c987ee1122be308b93"), "name" : "xiaohong", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("5fc789de87ee1122be308b94"), "name" : "lihua", "age" : 16, "gender" : "女" }
MongoDB Enterprise >
查询当前数据库状态
db.stats()
MongoDB Enterprise > db.stats()
{
"db" : "first_text",
"collections" : 2,
"views" : 0,
"objects" : 14,
"avgObjSize" : 65.28571428571429,
"dataSize" : 914,
"storageSize" : 73728,
"indexes" : 2,
"indexSize" : 73728,
"totalSize" : 147456,
"scaleFactor" : 1,
"fsUsedSize" : 24420130816,
"fsTotalSize" : 41474588672,
"ok" : 1
}
数据库备份
db.copyDatabase(“数据库1”,“数据库2”,“地址”)
注:适合4.0及以下版本
db.copyDatabase("students","students_copy","127.0.0.1")
在最新版本中,也就是4.2版本以上,mongodb官方取消了copyDatabase和clone命令,取而代之的是mongodump和mongorestore
mongodump -h dbhost -d dbname -o dbdirectory
-h:服务器地址
-d:需要备份的数据库
-o:备份数据库要保存的路径
删除集合
db.集合名.drop()
MongoDB Enterprise > db.practice.drop()
true
删除当前所在的数据库
db.dropDatabase()
MongoDB Enterprise > db.createCollection("del_text")
{ "ok" : 1 }
MongoDB Enterprise > show databases
admin 0.000GB
config 0.000GB
first_text 0.000GB
local 0.000GB
MongoDB Enterprise > use del_text
switched to db del_text
MongoDB Enterprise > db.dropDatabase()
{ "ok" : 1 }
更新数据或修改数据
db.集合名.update(query,update[,upsert,multi])
query:条件(小于:“gt”,等于:“
ne”,大于等于:“
lte”)
# 将年龄大于等于22岁的学生的性别改为男士
MongoDB Enterprise > db.students.update({"age":{"$gte":22}},{"gender":"男"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "gender" : "男" }
{ "_id" : ObjectId("5fc7899287ee1122be308b91"), "name" : "lisi", "age" : 18, "gender" : "男" }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
{ "_id" : ObjectId("5fc789c987ee1122be308b93"), "name" : "xiaohong", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("5fc789de87ee1122be308b94"), "name" : "lihua", "age" : 16, "gender" : "女" }
# 由结果来看,修改了满足条件的第一条数据,而且将满足条件的这条数据整体进行了替换
update:更新后的数据,新数据
$set:只更新字段
# 将名字是lisi的学生的年龄改为26
MongoDB Enterprise > db.students.update({"name":"lisi"},{"$set":{"age":26}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
MongoDB Enterprise > db.students.find()
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "gender" : "男" }
{ "_id" : ObjectId("5fc7899287ee1122be308b91"), "name" : "lisi", "age" : 26, "gender" : "男" }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
{ "_id" : ObjectId("5fc789c987ee1122be308b93"), "name" : "xiaohong", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("5fc789de87ee1122be308b94"), "name" : "lihua", "age" : 16, "gender" : "女" }
# 加了$set后只修改了某一个字段的值
$inc:增加字段值
# 将李四年龄加2
MongoDB Enterprise > db.students.update({"name":"lisi"},{"$inc":{"age":2}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
MongoDB Enterprise > db.students.find()
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "gender" : "男" }
{ "_id" : ObjectId("5fc7899287ee1122be308b91"), "name" : "lisi", "age" : 28, "gender" : "男" }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
{ "_id" : ObjectId("5fc789c987ee1122be308b93"), "name" : "xiaohong", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("5fc789de87ee1122be308b94"), "name" : "lihua", "age" : 16, "gender" : "女" }
MongoDB Enterprise >
$rename:将一个字段重新命名
# 将lisi的gender字段改为性别
MongoDB Enterprise > db.students.update({"name":"lisi"},{"$rename":{"gender":"性别"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
MongoDB Enterprise > db.students.find()
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "gender" : "男" }
{ "_id" : ObjectId("5fc7899287ee1122be308b91"), "name" : "lisi", "age" : 28, "性别" : "男" }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
{ "_id" : ObjectId("5fc789c987ee1122be308b93"), "name" : "xiaohong", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("5fc789de87ee1122be308b94"), "name" : "lihua", "age" : 16, "gender" : "女" }
$unset:删除一个字段,后面的字典需要给一个参数1
MongoDB Enterprise > db.students.update({"name":"lisi"},{"$unset":{"age":1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
MongoDB Enterprise > db.students.find()
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "gender" : "男" }
{ "_id" : ObjectId("5fc7899287ee1122be308b91"), "name" : "lisi", "性别" : "男" }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
{ "_id" : ObjectId("5fc789c987ee1122be308b93"), "name" : "xiaohong", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("5fc789de87ee1122be308b94"), "name" : "lihua", "age" : 16, "gender" : "女" }
upsert:可选参数,是一个布尔值。作用:如果不存在update的字段,则插入更新的数据
# id为0的学生只有gender字段,如果upsert为false,则会提示没有匹配到任何信息,设置为true的时候,则会进行添加
MongoDB Enterprise > db.students.update({"gender":"男"},{"$set":{"age":33}},{"upsert":"true"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
MongoDB Enterprise > db.students.find()
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "gender" : "男", "age" : 33 }
{ "_id" : ObjectId("5fc7899287ee1122be308b91"), "name" : "lisi", "性别" : "男" }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
{ "_id" : ObjectId("5fc789c987ee1122be308b93"), "name" : "xiaohong", "age" : 26, "gender" : "女" }
{ "_id" : ObjectId("5fc789de87ee1122be308b94"), "name" : "lihua", "age" : 16, "gender" : "女" }
multi:可选参数,是一个布尔值。作用:是否将查询出来的所有符合条件的数据全部更新。true表示全部更新,false表示只更新第一条,默认是false
# 将年龄小于30岁的学生的年龄全部加2
MongoDB Enterprise > db.students.update({"age":{"$lt":30}},{"$inc":{"age":2}},{"multi":"true"})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
MongoDB Enterprise > db.students.find()
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "gender" : "男", "age" : 33 }
{ "_id" : ObjectId("5fc7899287ee1122be308b91"), "name" : "lisi", "性别" : "男" }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
{ "_id" : ObjectId("5fc789c987ee1122be308b93"), "name" : "xiaohong", "age" : 28, "gender" : "女" }
{ "_id" : ObjectId("5fc789de87ee1122be308b94"), "name" : "lihua", "age" : 18, "gender" : "女" }
删除文档:
remove(query[,justOne])
query:必选项
justOne:可选参数,代表是否只删除一条数据,是一个布尔值。默认false
db.集合名.remove(query,true/false) 是否只删除一条数据
# 删除性别是男的第一个学生,只删除一条数据
MongoDB Enterprise > db.students.remove({"性别":"男"},true)
WriteResult({ "nRemoved" : 1 })
MongoDB Enterprise > db.students.find()
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "gender" : "男", "age" : 33 }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
{ "_id" : ObjectId("5fc789c987ee1122be308b93"), "name" : "xiaohong", "age" : 28, "gender" : "女" }
{ "_id" : ObjectId("5fc789de87ee1122be308b94"), "name" : "lihua", "age" : 18, "gender" : "女" }
db.集合名.remove(query) 根据条件删除,删除全部符合条件的数据
# 删除性别是女的所有学生
MongoDB Enterprise > db.students.remove({"gender":"女"})
WriteResult({ "nRemoved" : 2 })
MongoDB Enterprise > db.students.find()
{ "_id" : ObjectId("5fc7891987ee1122be308b90"), "gender" : "男", "age" : 33 }
{ "_id" : ObjectId("5fc789b487ee1122be308b92"), "name" : "wangwu", "age" : 30, "gender" : "男" }
MongoDB Enterprise >
db.集合名.remove({}) 删除全部文档
# 删除剩下所有的学生数据
MongoDB Enterprise > db.students.remove({})
WriteResult({ "nRemoved" : 2 })
MongoDB Enterprise > db.students.find()
MongoDB Enterprise >
条件查询
格式:find[query,是否显示此字段]
重新插入5条数据
MongoDB Enterprise > db.students.insert({"name":"zhangsan","age":20,"gender":"man"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.students.insert({"name":"lisi","age":"17","gender":"woman"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.students.insert({"name":"wangwu","age":"26","gender":"man"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.students.insert({"name":"zhaoliu","age":"20","gender":"man"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.students.insert({"name":"lanqi","age":"12","gender":"woman"})
WriteResult({ "nInserted" : 1 })
db.集合名.find() 查询所有文档
MongoDB Enterprise > db.practice.find()
{ "_id" : ObjectId("5fc733dd47aeb8635578dcef"), "name" : "wangwu", "age" : "26", "gender" : "mam" }
{ "_id" : ObjectId("5fc7372247aeb8635578dcf3"), "name" : "zhangsan", "age" : "20", "gender" : "man" }
{ "_id" : ObjectId("5fc7381c47aeb8635578dcf4"), "name" : "zhaoliu", "age" : "20", "gender" : "woman" }
{ "_id" : ObjectId("5fc7383347aeb8635578dcf5"), "name" : "lanqi", "age" : "29", "gender" : "man" }
db.集合名.find(query) 查询所有符合条件的文档
# 查询年龄大于20的用户
MongoDB Enterprise > db.students.find({"age":{"$gt":"20"}})
{ "_id" : ObjectId("5fc7ac97e605e1d1bd365133"), "name" : "wangwu", "age" : "26", "gender" : "man" }
db.集合名.find(query,{k:1(显示)/0(不显示)})
# 查询年龄大于20的用户,并且只显示名字和姓名
MongoDB Enterprise > db.students.find({"age":{"$gt":"20"}},{"name":1,"age":1})
{ "_id" : ObjectId("5fc7ac97e605e1d1bd365133"), "name" : "wangwu", "age" : "26" }
注:find()方法查询时,查询出来的数据是一行显示的,可以使用pretty()将数据格式化输出
MongoDB Enterprise > db.students.find().pretty()
{
"_id" : ObjectId("5fc7ac84e605e1d1bd365131"),
"name" : "zhangsan",
"age" : 20,
"gender" : "man"
}
{
"_id" : ObjectId("5fc7ac8ee605e1d1bd365132"),
"name" : "lisi",
"age" : "17",
"gender" : "woman"
}
{
"_id" : ObjectId("5fc7ac97e605e1d1bd365133"),
"name" : "wangwu",
"age" : "26",
"gender" : "man"
}
{
"_id" : ObjectId("5fc7aca3e605e1d1bd365134"),
"name" : "zhaoliu",
"age" : "20",
"gender" : "man"
}
{
"_id" : ObjectId("5fc7acaee605e1d1bd365135"),
"name" : "lanqi",
"age" : "12",
"gender" : "woman"
}
db.集合名.findOne([query,是否显示此字段]),只查询一条数据,返回的数据格式是格式化之后的数据,所以,此方法不能使用pretty()
MongoDB Enterprise > db.students.findOne()
{
"_id" : ObjectId("5fc7ac84e605e1d1bd365131"),
"name" : "zhangsan",
"age" : 20,
"gender" : "man"
}
查询某一列去重后的数据
db.集合名.distinct(k)
MongoDB Enterprise > db.students.distinct("age")
[ "12", "17", "20", "26" ]
and的使用,多个条件以逗号分隔
db.集合名.find({“k1”:“v1”,“k2”:“v2”,…})
MongoDB Enterprise > db.students.find({"age":"20","name":"zhangsan"})
{ "_id" : ObjectId("5fc7ac84e605e1d1bd365131"), "name" : "zhangsan", "age" : "20", "gender" : "man" }
or条件的使用:$or
MongoDB Enterprise > db.students.find({"$or":[{"age":"20"},{"gender":"man"}]})
{ "_id" : ObjectId("5fc7ac84e605e1d1bd365131"), "name" : "zhangsan", "age" : "20", "gender" : "man" }
{ "_id" : ObjectId("5fc7ac97e605e1d1bd365133"), "name" : "wangwu", "age" : "26", "gender" : "man" }
{ "_id" : ObjectId("5fc7aca3e605e1d1bd365134"), "name" : "zhaoliu", "age" : "20", "gender" : "man" }
限制查询:limit()
db.集合名.find().limit(n)
# 查询前3条数据
MongoDB Enterprise > db.students.find().limit(3)
{ "_id" : ObjectId("5fc7ac84e605e1d1bd365131"), "name" : "zhangsan", "age" : "20", "gender" : "man" }
{ "_id" : ObjectId("5fc7ac8ee605e1d1bd365132"), "name" : "lisi", "age" : "17", "gender" : "woman" }
{ "_id" : ObjectId("5fc7ac97e605e1d1bd365133"), "name" : "wangwu", "age" : "26", "gender" : "man" }
略过数据查询:skip()
db.集合名.find().skip(n)
# 跳过前2条数据,从第3条数据开始查询
MongoDB Enterprise > db.students.find().skip(2)
{ "_id" : ObjectId("5fc7ac97e605e1d1bd365133"), "name" : "wangwu", "age" : "26", "gender" : "man" }
{ "_id" : ObjectId("5fc7aca3e605e1d1bd365134"), "name" : "zhaoliu", "age" : "20", "gender" : "man" }
{ "_id" : ObjectId("5fc7acaee605e1d1bd365135"), "name" : "lanqi", "age" : "12", "gender" : "woman" }
分页查询
db.集合名.find().skip(n).limit(m)
# 跳过前两条数据,从第三条数据开始查询,查询2条数据
MongoDB Enterprise > db.students.find().skip(2).limit(2)
{ "_id" : ObjectId("5fc7ac97e605e1d1bd365133"), "name" : "wangwu", "age" : "26", "gender" : "man" }
{ "_id" : ObjectId("5fc7aca3e605e1d1bd365134"), "name" : "zhaoliu", "age" : "20", "gender" : "man" }
模糊查询
db.集合名.find(“k”:/xxxx/)
# 查询名字中含有an两个字母的数据
MongoDB Enterprise > db.students.find({"name":/an/})
{ "_id" : ObjectId("5fc7ac84e605e1d1bd365131"), "name" : "zhangsan", "age" : "20", "gender" : "man" }
{ "_id" : ObjectId("5fc7ac97e605e1d1bd365133"), "name" : "wangwu", "age" : "26", "gender" : "man" }
{ "_id" : ObjectId("5fc7acaee605e1d1bd365135"), "name" : "lanqi", "age" : "12", "gender" : "woman" }