mongodb使用
回顾mysql
- 所有表的集合 --库
- 每一组信息 --表
- 每一条信息 --字段
但是在mongodb中
- 作为外层的容器还是叫databses
- 在mongodb中表这个东西已经不存在了而叫做 集合(collection)
- 在mongodb中字段这个东西也不存在了而叫做文档(document)
mongodb使用
- 连接
语法:mongo空格127.0.0.1:27017
E:\MongoDB\bin>mongo
MongoDB shell version v3.4.15-35-gae53ff0702
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.15-35-gae53ff0702
Server has startup warnings:
2019-08-13T14:53:41.467+0800 I CONTROL [initandlisten]
2019-08-13T14:53:41.467+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-08-13T14:53:41.467+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-08-13T14:53:41.467+0800 I CONTROL [initandlisten]
- 操作
- 查看数据库:show空格dbs;
> show dbs
admin 0.000GB
local 0.000GB
mgd 0.000GB
- 切换/新增(如果有就是切换 如果没有就是新增)数据库
use 空格 要切换或者新增的库
> use mgd
switched to db mgd
注意新增有问题
> show dbs
admin 0.000GB
local 0.000GB
mgd 0.000GB
当我们输入一个没有的库名的时候本应该是新增 但是当我们输入之后发现并没有新增 原因是(其实新增了只是里面没有集合所以不显示)
- 创建集合:
db.要创建的集合名字.insert({k:v})
> db.chuichui.insert({"name":"大锤",age:20,sex:"男"})
WriteResult({ "nInserted" : 1 })
- 查看集合
show空格collections
> show collections
chuichui
- 删除库
必须先切换到你要删的库 use空格库名
db.dropDatabase() - 删除集合
必须先要切换到指定要删除集合的库中
db.要删除的集合名.drop()
> use mgd
switched to db mgd
> db.chuichui.drop()
true
> show collections
>
基本的外围操作完了
上面的内容重要程度没有下面高必须要记住:
1. 要对集合进行增删改查那么必须要有集合
只创建集合的语法
db.createCollection(“要创建集合的名字”);
> db.createCollection("NO13")
{ "ok" : 1 }
2. 新增
最单纯的新增(基础语法)
db.要插入的集合名.insert({k:v})
> db.NO13.insert({"name":"王大锤",age:20,sex:"男"})
WriteResult({ "nInserted" : 1 })
为了查看我们是否新增成功 使用查询语句来查看
db.要查询的集合.find()
> db.NO13.find()
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "name" : "王木锤", "age" : 16, "sex" : "女" }
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "name" : "王铜锤", "age" : 18, "sex" : "男" }
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
大家会发现id是自动添加的,比较难记
手工新增id
db.要插入的集合名.insert({"_id":1,k:v})
> db.NO13.insert({"_id":1,"name":"王小锤",age:13,sex:"男"})
WriteResult({ "nInserted" : 1 })
既然是手工指定那么千万不要重名
3. 多条插入
db.要插入的集合.insert([{k:v},{k:v}])
> db.NO13.insert([{"name":"王钢锤"},{"name":"王石锤"}])
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
4. 查询
- 按照条件进行查询
db.要查询的集合名.find({k:v})
> db.NO13.find({age:18})
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "name" : "王铜锤", "age" : 18, "sex" : "男" }
- 格式化查询数据
Db.要查询的数据find({k:v},{k:0/1}) 0不显示 1显示
> db.NO13.find({"name":"王金锤"},{"age":1,"_id":0})
{ "age" : 19 }
> db.NO13.find({"age":20},{"sex":1,"_id":0})
{ "sex" : "男" }
- 查询匹配更多内容
Db.要查询的数据.find({查询的内容1,查询的内容2···})
> db.NO13.find({"name":"王银锤",sex:"女"})
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
- 条件查询
Db.查询的集合.find({“要查询的k”:{条件:值}})
条件
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
- (!=) 不等于 - $ne:
代码:
> db.NO13.find({"age":{$gt:19}})
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
> db.NO13.find({"age":{$lt:19}})
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "name" : "王木锤", "age" : 16, "sex" : "女" }
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "name" : "王铜锤", "age" : 18, "sex" : "男" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
> db.NO13.find({"age":{$gte:19}})
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
> db.NO13.find({"age":{$lte:19}})
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "name" : "王木锤", "age" : 16, "sex" : "女" }
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "name" : "王铜锤", "age" : 18, "sex" : "男" }
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
> db.NO13.find({"age":{$ne:19}})
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "name" : "王木锤", "age" : 16, "sex" : "女" }
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "name" : "王铜锤", "age" : 18, "sex" : "男" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df8"), "name" : "王钢锤" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df9"), "name" : "王石锤" }
- 匹配查询多个内容
Db.要查询的集合.find({$or:[{查询的内容1},{查询的内容2}]})
> db.NO13.find({$or:[{"name":"王金锤"},{"name":"王铁锤"}]})
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男" }
- 排序查询
db.要查询的集合.find().sort({要排序的内容:-1倒序/1正序})
> db.NO13.find().sort({"age":-1})
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男" }
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "name" : "王铜锤", "age" : 18, "sex" : "男" }
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "name" : "王木锤", "age" : 16, "sex" : "女" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df8"), "name" : "王钢锤" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df9"), "name" : "王石锤" }
> db.NO13.find().sort({"age":1})
{ "_id" : ObjectId("5d53b53b08a6149f969e8df8"), "name" : "王钢锤" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df9"), "name" : "王石锤" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "name" : "王木锤", "age" : 16, "sex" : "女" }
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "name" : "王铜锤", "age" : 18, "sex" : "男" }
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男" }
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
limit读取指定数量的数据记录条数
skip使用skip()方法来跳过指定数量的数据
> db.NO13.find().skip(4)
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df8"), "name" : "王钢锤" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df9"), "name" : "王石锤" }
> db.NO13.find().skip(0).limit(2)
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
返回结果集中的数量count()
> db.NO13.find().count()
9
修改:
>db.collection.update(
{<query>},
{$set:{<update>}},
{
upsert: <boolean>,
multi: <boolean>
}
)
query:查询出要修改的数据
update:要修改的数据的值
upsert:可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入
multi: 可选,MongoDB 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
7. 单纯的修改
> db.NO13.update({"age":16},{"age":116})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.NO13.find()
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "age" : 116 }
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "name" : "王铜锤", "age" : 18, "sex" : "男" }
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df8"), "name" : "王钢锤" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df9"), "name" : "王石锤" }
> db.NO13.update({"age":116},{$set:{"name":"王家小锤爷"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.NO13.find()
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "age" : 116, "name" : "王家小锤爷" }
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "name" : "王铜锤", "age" : 18, "sex" : "男" }
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df8"), "name" : "王钢锤" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df9"), "name" : "王石锤" }
修改更多内容
> db.NO13.update({"age":19},{$set:{"sec":"半男不女"}},{multi:true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.NO13.find()
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "age" : 116, "name" : "王家小锤爷" }
{ "_id" : ObjectId("5d53b2e208a6149f969e8df5"), "age" : 19, "sec" : "半男不女" }
{ "_id" : ObjectId("5d53b2f308a6149f969e8df6"), "name" : "王金锤", "age" : 19, "sex" : "男", "sec" : "半男不女" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df8"), "name" : "王钢锤" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df9"), "name" : "王石锤" }
- 删除
Db.要删除的集合.remove({k:v})默认删除匹配到的所有内容
> db.NO13.remove({"age":19})
WriteResult({ "nRemoved" : 2 })
> db.NO13.find()
{ "_id" : ObjectId("5d53b24708a6149f969e8df2"), "name" : "王大锤", "age" : 20, "sex" : "男" }
{ "_id" : ObjectId("5d53b2a408a6149f969e8df3"), "name" : "王铁锤", "age" : 30, "sex" : "男" }
{ "_id" : ObjectId("5d53b2c308a6149f969e8df4"), "age" : 116, "name" : "王家小锤爷" }
{ "_id" : ObjectId("5d53b30a08a6149f969e8df7"), "name" : "王银锤", "age" : 23, "sex" : "女" }
{ "_id" : 1, "name" : "王小锤", "age" : 13, "sex" : "男" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df8"), "name" : "王钢锤" }
{ "_id" : ObjectId("5d53b53b08a6149f969e8df9"), "name" : "王石锤" }
只想删除一条 justOne