1,MongoDB概念解析:
Mongo数据库基本概念是文档,集合,数据库,下表给予介绍
SQL术语概念
MongoDB术语概念
解释/说明
database
database
数据库
table
collestion
数据库/集合
row
document
数据记录行/文档
column
field
数据字段/域
index
index
索引
table joins
表连接,MongoDB不支持
primary key
primary key
主键,MongoDB自动将_id字段设置为主键
一个MongoDB中可以建立多个数据库.MongoDB的默认数据库为"db",该数据存在data目录中.MongoDB的单个 实例 可以容纳多个独立的数据库.每一个都有自己的集合权限,不同的数据库也放置在不同的文件中.
show dbs 展示所有数据库
以上实例命令中,"local"是要选择的数据库.
数据库名是保留的,可以直接访问这些特殊作用的数据库.
- admin: 从权限的角度来看,这是"root"数据库,钥匙将一个用户添加到这个数据库,这个用户自动继承所有的数据库的权限.一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器
- local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
- config:当Mongo用于分片设置式,config数据库在内部使用,用于白村分片的相关信息
2,MongoDB的查找:
查找语句:
// 插入多条数据用{},{}隔开
db.xiaopangpang.insertMany([{
"name":"xuexue",
"age":29,
"hobby":["继继","帅爆太阳的男人","帅爆太阳那人"]
}])
db.xiaopangpang.insertMany([{
"name":"xiaoxue",
"age":28,
"hobby":["帅爆太阳的men", "帅爆太阳的gentleman","帅爆太阳的行者"]
}])
db.xiaopangpang.insertMany([{
"name":"xueren",
"age":27,
"hobby":["多想再见你","哪怕匆匆一眼","就离去"]
}])
增加语句:
db.xiaopangpang.insertOne({
"name":"miss",
"age":26,
})
更新语句:
})
// 更新编辑数据的操作
db.xiaopangpang.updateOne({"name":"xiaoxueza"},{$set:{"name":"laingxue"}})
db.xiaopangpang.updateMany({"age":{$gt:28}},{$set:{"age":30}})
db.xiaopangpang.find()
删除语句:
// 删除数据remove({})什么都不加把表里的数据都删除
db.xiaopangpang.remove({})
db.xiaopangpang.find({
"name":"miss"
})
// 删除表里边的数据
db.xiaopangpang.deleteOne({"name":"xiaoxue"})
db.xiaopangpang.find()
db.xiaopangpang.insertOne({
"name":"jdhjasfho",
"age":23,
"hobby":["fmkljfl","daf"]
})
3,MongoDB的进阶操作
3.1,大胖胖表的增删改查
// 大胖胖的表的增删该查
// 查看所有的表
show tables
db.dapangpang.find({})
修改器:
// 修改器
db.dapangpang.updateOne({"name":"雪雪"},{$set:{"name":"雪雪"}})
//$unset 简单粗暴的删除字段
db.dapangpang.updateOne({"name":"雪雪"},{$unset:{"name":"雪雪"}})
db.dapangpang.insertOne({
"name":"雪人",
"hobby":[
"me",
"my",
"i",
"miss"
]
})
// 插入年龄的字段 db.dapangpang.updateMany({},{$set:{"age":26}}) // $inc引用增加 db.dapangpang.updateMany({"name":"雪ren"},{$inc:{"age":2}}) db.dapangpang.remove({}) db.dapangpang.insertMany([{ "name":"雪雪", "hobby":[ "帅爆太阳的男人", "帅爆太阳那人", "帅爆太阳的men" ], "age":27 }, { "name":"小雪", "hobby":[ "花落翩翩", "时光旋转","慢慢沦陷" ], "age":26 }])
// array操作,在array中添加一个新的元素
db.dapangpang.updateOne({"name":"雪人"},{$push:{"hobby":"miss"}})
// pull在array中删除一个的元素
db.dapangpang.updateOne({"name":"雪雪"},{$pull:{"hobby":"帅爆太阳那人"}})
//pop不含索引-1,从前往后, 1从后往前
db.dapangpang.updateOne({"name":"小雪"},{$pop:{"hobby":1}})
db.dapangpang.updateOne({"name":"小雪"},{$pop:{"hobby":-1}})
//保留索引条件数据的下标,实际是定位到那个字典或者列表
db.dapangpang.updateOne({"hobby":"me"},{$set:{"hobby.$":"it's ok!"}})
// Object字典的操作
db.dapangpang.updateOne({"name":"雪雪"},{$set:{feature:["perfect", "lovely","stubborn"]}})
db.dapangpang.updateOne({"name":"雪雪"},{$set:{feature:{"size":32,}}})
db.dapangpang.updateOne({"name":"雪雪"},{$inc:{"feature.size":5}})
// 修改hobby中的big
db.dapangpang.updateOne({"hobby.depth":6},{$set:{"hobby.$.big":26}})
//limit表示从当前位置选择若干个
db.dapangpang.find({}).limit(2)
// skip跳过
db.dapangpang.find({}).skip(2)
// sort排序 db.dapangpang.find({}).sort({age:-1}) db.dapangpang.find({}).sort({"name":1}) // limit + skip + sort 分页 // 优先级最高的为sort // 其次为skip // 最低级为limit db.dapangpang.find({}).limit(1).sort({age:-1}).skip(1)
4,MongoDB在python中的应用
连接MongoDB服务器
import pymongo from bson import ObjectId
连接mongo服务器
mongo_client = pymongo.MongoClient(host="127.0.0.1", port=27017) MONGO = mongo_client.get_database("xuexue") tb = MONGO.get_collection("dapangpang") print(tb)
查找数据
查询数据库
res = tb.find() print(res, type(res)) for data in res: print(data) res1 = tb.find_one({"name": "雪雪"}) print(res1) res2 = tb.find({"$or":[{"name":"小雪"}, {"hobby": "帅爆太阳的男人"}]}) for data in res2: print(data)
res_obj = tb.find_one({"_id":ObjectId(res1["_id"])})
print(res_obj)
增加数据
增加数据
res = tb.insert_one({"name": "雷子", "age": 24,"hobby":["健身", "学习", "小说"]})
print(res,res.inserted_id)
ret = tb.find_one({"name":"雷子"})
print(ret)
res1 = tb.insert_many([{
"name": "郝哥", "age": 27, "hobby":["宋 ", "振", "中"]},
{"name": "佳丽", "age": 27, "hobby": ["还真不了解", "也不知道为什么", " 可能是鬼迷心窍了吧 "]}
])
print(res1)
ret1 = tb.find_one({"name": "郝哥"})
ret2 = tb.find_one({"name": "佳丽"})
print(ret1, ret2)
ret3 = tb.find()
for data in ret3:
print(data)
修改数据
修改数据
res = tb.update_one({"name": "佳丽"}, {"$set": {"age": 27}}) print(res,dir(res), res.raw_result) ret = tb.find_one({"name": "佳丽"}) print(ret)
删除数据
删除数据
res = tb.delete_one({"name": "雷子"})
print(res, dir(res), res.raw_result)
res1 = tb.delete_many({"name": "郝哥"})
print(res1, res1.raw_result)
res = tb.find()
for data in res:
print(data)
print(res)