mongoDB
作者:互联网
MongoDB
01 认识MongoDB
MongoDB简介
基于分布式文件存储的开源数据库系统。旨在为WEB应用提供可扩展的高性能数据存储解决方案。将数据存储为一个文档,文档类似于 Json格式,MongoDB是非关系型数据库,Json格式和字典格式很类似
{
name:"aa" ,
age:100,
address:{city:"cs",country:"china"}
}
MongoDB数据模型
02 库、集合操作
库与表操作
进入数据库: mongo
退出: exit
显示所有库: show dbs
切换/创建数据库:use 数据库名称
> use my_db
> switched to db my_db
创建集合: db.createCollection('name') #里面是字符串
> db.createCollection('student')
> { "ok" : 1 }
显示当前数据库的集合: show collections #只有里面有数据的库才能查到,如果里面没有数据 ,即便你已经创建了,你也show查不到
> show collections
> student
查看当前所在库: db
删除集合: db.集合名称.drop()
删除库: db.dropDatabase() #进入以后才能删除,删除的也就是打开的那个库
03 文档(数据)操作
添加文档(数据):db.集合名称.insert(document)
添加一条文档 db.students.insert({name:'xiaoming',age:18})
db.students.insert({name:'xiaoming',age:18}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'qqq',age:22}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'aaa',age:55}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'zzz',age:23}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'www',age:18}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'sss',age:18}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'ddd',age:20}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'ccc',age:16}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'vvv',age:18}) WriteResult({ "nInserted" : 1 }) db.students.insert({name:'rrr',age:20}) WriteResult({ "nInserted" : 1 })
添加多条文档 db.students.insert([{name:'flz',age:20,sex:'男'},{name:'lanqiao',age:30,sex:'男'}])
db.students.insert([{name:'flz',age:20,sex:'男'},{name:'lanqiao',age:30,sex:'男'}]) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
查询文档(数据)
db.集合名称.find([conditions])
查看集合中全部数据:db.students.find() #这里会自动生成一些东西用来区分数据一样的
db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "name" : "aaa", "age" : 55 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 }
id也可以自己设置
db.students.insert({"name":'qi',id:1}) WriteResult({ "nInserted" : 1 }) db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "name" : "aaa", "age" : 55 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 } { "id" : 1, "name" : "qi" }
格式化显示:db.students.find().pretty()
查看满足条件的数据:db.students.find({name:'xiaoming'})
db.students.find({name:'xiaoming'}) { "_id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 }
噩梦条件
and条件 {$and:[{expression1},{expression1},...]}
or条件 {$or:[{expression1},{expression1},...]}
and和or混用
db.table.find({$or:[{$and:[{sex:'女'},{age:18}]},{$and:[{sex:'男'},{age:{$gt:18}}]}]})
例:
db.students.find({$or:[{name:’xiaoming’},{age:18}]})
操作符 描述
$ne 不等于
$gt 大于
$lt 小于
$gte 大于等于
$lte 小于等于
例子:一写冒号就是字典,必须用{}括起来,操作符也必须用{}括起来
db.students.find({"age":{$gte:18}}) { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "name" : "aaa", "age" : 55 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "_id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 }
修改文档(数据)
条件+要修改的东西
db.集合名称.update(<query>,<update>,{multi:<boolean>})
修改一条数据:db.students.update({sex:'男'},{age:20}) #会覆盖掉
db.students.update({name:'aaa'},{age:88}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "age" : 88 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 } { "_id" : 1, "name" : "qi" }
指定属性修改:{$set:{age:20}} #只修改其中一部分
db.table.update({name:'xiaoming'},{$set:{age:666,sex:'xx'}})
db.students.update({name:'www'},{$set:{age:60}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "age" : 88 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 60 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 } { "_id" : 1, "name" : "qi" }
更新集合中所有满足条件的文档:{multi:true}
db.students.update({sex:'男'},{$set:{sex:'女'}},{multi:true})
db.students.update({sex:'男'},{$set:{sex:'女'}},{multi:true}) WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
db.students.find() { "id" : ObjectId("6223572ecca46b2c9c9f42b0"), "name" : "xiaoming", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b1"), "name" : "qqq", "age" : 22 } { "id" : ObjectId("6223572ecca46b2c9c9f42b2"), "age" : 88 } { "id" : ObjectId("6223572ecca46b2c9c9f42b3"), "name" : "zzz", "age" : 23 } { "id" : ObjectId("6223572ecca46b2c9c9f42b4"), "name" : "www", "age" : 60 } { "id" : ObjectId("6223572ecca46b2c9c9f42b5"), "name" : "sss", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b6"), "name" : "ddd", "age" : 20 } { "id" : ObjectId("6223572ecca46b2c9c9f42b7"), "name" : "ccc", "age" : 16 } { "id" : ObjectId("6223572ecca46b2c9c9f42b8"), "name" : "vvv", "age" : 18 } { "id" : ObjectId("6223572ecca46b2c9c9f42b9"), "name" : "rrr", "age" : 20 } { "id" : 1, "name" : "qi" } { "id" : ObjectId("62236218cca46b2c9c9f42ba"), "name" : "flz", "age" : 20, "sex" : "女" } { "_id" : ObjectId("62236218cca46b2c9c9f42bb"), "name" : "lanqiao", "age" : 30, "sex" : "女" }
删除文档(数据)
db.集合名称.remove(<query>,{justOne:<boolean>})
删除集合中所有的文档:db.table.remove({})
删除集合中满足条件的所有文档 db.table.remove({sex:'男'})
只删除集合中满足条件的第一条文档:{justOne:true}
db.table.remove({sex:'男'},{justOne:true})
04 Python操作mongodb,Python与MogoDB交互
pymongo
安装 pip install pymongo
建立连接:pymongo.MongoClient()
指定数据库:db=client[数据库名]
指定集合:collection=db[集合名]
官方推荐
查找文档:find_one() 查找所有:find()
添加文档:insert_one 添加多条:insert_many()
删除文档:delete_one 删除多条:delete_many()
修改文档:update_one 修改多条:update_many()
标签:name,ObjectId,mongoDB,age,db,18,id 来源: https://www.cnblogs.com/python20020105/p/mongDB.html