Mongodb 非关系型数据库 但是他是最像关系型 类似于Json格式 数据里面有数据,再有数据 mysql 就比较难做到 分布式储存 计算机节点上 集群 Mangodb数据库 文档数据 json 格式 集群 运维搭建集群 一个集合类似于关系数据库中的表table 最小的单元是文档---数据 缺点:比较耗内存
mongo # 进入mongo exit # 退出 显示所有数据库 show dbs 前3个是配置信息 # 进入数据库,创建 都是用use 如果没有库他会默认一个 test use class13 # 进入了才能删除 db.dropDatabase() 必须大写 # 查看当前数据库 db # mango 只有存在集合(数据)的数据库 才是有用的,才有价值,空数据库没有存在的价值 # 创建集合 db.createCollection('students') 必须大写 当然 也可以不用创集合 你在给集合加内容时就会自动创建 # 显示当前数据库的集合 show collections # 删除集合 db.students.drop()
默认情况下,在集合中插入文档时,如果字段名中没有_id的字段名称,则MongoDB将自动添加一个ObjectId字段。
ObjectId是轻量型的,不同的机器都能全局唯一的生成它;ObjectId使用12字节的存储空间。
文档操作 想给集合插入数据 db.students.insert({'name':'xiaoming','age':18}) db.students.insert({'name':'aaa','age':22}) db.students.insert({'name':'bbb','age':18}) db.students.insert({'name':'ccc','age':18}) # 查看全部的数据 db.students.find() # 唯一的Object id # 指定_id db.students.insert({"_id":123,"name":"sss",'age':13}) # 创建多个就是写到列表中就OK了 db.students.insert([{'name':'parker1','age':13},{'name':'parker2','age':14},{'name':'parker3','age':16}]) 批量插入的结果是 3条 # 查询 db.students.find() db.students.find().pretty() # 格式化显示 /ˈpretty/漂亮的 # 查看满足条件的的数据 db.students.find({'name':'parker2'}) # 就能查出来 # 格式化显示 db.students.find({'name':'parker1'}).pretty() ---------------------------------------------------------------- 条件$gte $gt $lte $lt db.students.find({age:{$gte:18}}) 大于等于18的 db.students.find({age:{$gt:18}}) 大于18的 db.students.find({age:{$lte:18}}) 小于等于18的 db.students.find({age:{$lt:18}}) 小于18的 and条件 or条件 $and db.students.find({$and: [ {'name':'parker1'}, {'age':13} ] }) # name='parker1' and age=13 db.students.find({$or: [{'name':'parker2'}, {'age':18}] }).pretty() # name=parker2 or age=18 and和 or混用 db.students.find({$or:[{},{}]}) db.students.find({$or:[{$and:[{},{}]},{$and:[{},{}]}]}) db.students.find({$or:[{$and:[{"name":"parker1"},{"age":13}]},{$and:[{"name":"xiaoming"},{"age":18}]}]}) ({$or:[{$and:[{}, {}]},{$and:[{}, {age:{}}]}]}) # 修改数据 # 修改一条数据 # 两个字典 第一个是条件 只会更新找到的第一条数据 db.students.update({'name':'parker1'},{'name':'new_name'}) # 把前面所有的东西全部覆盖掉,替换掉 db.students.update({'name':'parker3'},{'name':'parker4','age':100}) # 现在我不想这样做,我要修改我指定的数据 db.students.update({'name':'parker2'},{$set:{'age':1000}}) # 他只改找到的第一条数据 db.students.update({"age":18},{$set:{"name":'baobao'}}) # 看一下区别 db.students.update({"age":18},{"name":'baobao'}) $set:有就修改,没有就创建 删除文档(数据) # 删除满足条件的文档 db.students.remove({'name':'aaa'}) # 删除满足条件第一条的文档 db.students.insert({'name':'bbb','age':18}) db.students.remove({'name':'bbb'},{justOne:true}) # 删除所有的文档 db.students.remove({})
import pymongo # 导入模块 # 1.建立连接 collection.insert_one({'name':''}) sudo ufw allow 27017 更新 ----------------------------------------------------------- import pymongo # 建立连接 client = pymongo.MongoClient('127.0.0.1',27017) # 可以省略 # 指定数据库 db = client['python3'] # 指定集合 my_col = db['student'] # 数据操作 (怎删改查) # 增 # my_col.insert({'name':'parker1','age':16}) # 增多个 my_col.insert_many([{'name':'parker1','age':13},{'name':'parker2','age':14},{'name':'parker3','age':16}]) # 查 # res = my_col.find_one() # print(res) # res = my_col.find() # print(res) # for i in res: # print(i) # 改 # my_col.update_one({'name':'parker1'},{'$set':{'age':100}}) # 查看 # res = my_col.find_one({'name':'parker1'}) # print(res) # 删 删除一个 res = my_col.delete_one({'name':'parker3'}) print(res) import pymongo client = pymongo.MongoClient('127.0.0.1',27017) db = client['mydb'] collection = db['stu'] collection.insert_one({'name':'aa','age':18}) collection.insert_many([ {'name':'bb','age':19}, {'name':'cc','age':20}, ]) for i in collection.find(): print(i) print(collection.find_one({'name':'bb'}))