至于如何安装,自行搜索吧,这里就不介绍了^_^
Linux安装mongodb参考
创建数据库
安装好mongodb数据库后,创建一个数据库
mongo --dbpath D:/process/mongodb
1 Mongo数据库的操作
# 查看数据库
shou dbs;
# 切换数据库(如果数据库不存在,则指向数据库,但不创建,直到插入数据或者创建集合时数据库才被创建)
use 数据库名;
# 删除数据库
use 数据库名
db.dropDatabase()
# 向数据库中创建一个集合
# 切换到数据库中
use person;
# 这个时候我们去查看数据库的时候是没有person这个数据库的
show dbs;
# 向person这个数据库中插入了一个集合,这个时候我们使用show dbs的时候就发现有person这个数据库了
db.createCollection('student')
2 集合的操作
# 创建集合
db.createCollection(集合名,{capped:true,size:num})
capped:默认值为false表示不设置上限,值为true表示设置上限
size:当capped值为true时,需要指定此参数,表示上限大小,当文档达到上限时,会将之前的数据覆盖,单位为字节
# 删除集合
db.集合名称.drop()
# 查看集合
show tables;
show collections
3 数据的插入
注意:插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的Objectld
# 3.1 insert
# 而insert则会忽略操作,insert可以—次性插入—个列表,而不用遍历,效率高
db.集合名称.insert(document)
eg: db.student.insert({"name":"张三"})
# 3.2 save
使用save函数里,如果原来的对象不存在,那他们都可以向collection里插入数据,如果已经存在,save会调用update更新里面的记录save则需要遍历列表,一个个插入,效率稍低
db.集合名称.save(document)
# 3.3举例
已存在数据:
{i_id : 'abc123', " name " : "小王"}
再次进行插入操作时insert
(i_id : 'abc123', "name" : "小李"})会报主键重复的错误提示
save({ _id : 'abc123', "name" :"小李"})会把小王修改为小李
如果集合中不存在 _id :'abc123',
insert({_id : 'abc123' , "name" :"小李"})增加一条数据
save({_id : 'abc123', "name" :"小李"})增加一条数据
# 3.4 插入多条数据的话,使用列表包含
db.student.insert([{'name':"张三"},{'name':"李四"}])
# 使用for循环向mongodb中插入数据
for(i=0;i<5;i++){db.student.insert({'name':"小霸王",'age':i})};
4 数据的修改
4.1 格式
db.集合名称.update(
<query>,
<update>,
{multi: <boolean>}
)
·参数query:查询条件,类似sql语句update中where部分
·参数update:更新操作符,类似sql语句update中set部分
·参数multi:可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新
4.2 举例
#只更新找到的第一条,并且会修改结构
db.person.update({name: "zs"},{age: 16})
#只更新数据,为不更新文档结构
db.person.update({name : "zs"},{$set:{age: 123})
#更新所有找到|匹配的数据
db.person.update({name:"zs"},{$set:{age:123},{multi: true})
4.3 数据的删除
1.3数据的删除
#删除所有匹配数据
db.person.remove({name : "zS"})
#只更新一条
db.person.remove({name : "zS5"},{justOne:true})
# 删除集合的所有数据
db.student.remove({})
5 数据的查询
# 查询所有的
db.student.find()
# 只返回匹配的第一个数据
db.student.findOne({条件文档})
5.2.运算符
| 语法 | 操作 | 格式 |
|---|---|---|
| $eq | 等于 | {:} |
| $lt | 小于 | {:{$It} |
| $lte | 小于或等于 | {:{$lte:}} |
| $gt | 大于 | {:{$gt:} |
| $gte | 大于或等于 | {:{$gte:}} |
| $ne | 不等于 | f:{$ne: |
| $or | 或 | {$or:[{},{}]} |
| $in | 在范围内 | {age:{$in:[val1,val2]1} |
| $nin | 不在范围内 | {age:{$nin:[val1,val2]}} |
举例
db.person.find({age:{$gt:16}})
db.person.find({$or:[{age:{$gte:18}},{name:'zs'}])
db.person.find({country:{$in:['蜀国','吴国']}})
5.3模糊匹配
使用//或者 $regex编写正则表达式
db.person.find({name:/^zs/})
db.person.find({name:{$regex:'^zs'}})
5.4自定义查询
db.person.find({$where:function(){return this.age>20}})
5.5 limit
返回指定数量的数据
db.person.find().limit(number)
5.6 skip
用于跳过指定数量的文档
db.集合名称.find(2)
5.6 sort
对查询结果进行排序
# 1 为升序 -1为降序
db.集合名称.find()sort({字段:1,...})
5.7 count
用于统计结果集中文档条数
更多查询方法请看
参考:www.jianshu.com/p/0a52c672a…
6 MongoDB与Python交互
1 安装环境
pip insta1l pymongo
import pymongo
2.连接,创建客户端
client = pymongo.Mongoclient("localhost",27017)
client = pymongo.Nongoclient('mongodb://localhost:27017/')
3.获得数据库test1
db = client.test1
db = client['test']
5.添加数据
#增加一条
m1={name:"300集",actor:"高总",level : 10}
m1_id = movie.insert_one(s1).inserted_id
#增加多条
m1=iname : {"300集",actor:"高总",level : 10}
m1_id = movie.insert_one(s1).inserted_id
#增加多条
mids = movie.insert_many([movie1,movie2])
注意︰原insert方法也可以实现上面的功能,但是在PyMongo 3.x的版本已经不推荐使用了
6.查找数据
. find()返回一个生成器对象. find one()返回一条数据
功能符号
| 符号 | 含义 | 示例 | 示例合义 |
|---|---|---|---|
| $regex | 匹配正则表达式 | {'name': {"$regex":"^M.**}} | namel以M开头 |
| $exists | 属性是否存在 | 'name': {"$exists': True)}) | name属性存在 |
| $type | 类型判断 | {('age': {"$type': 'int'} | age的类型为int |
| $mod | 数字模操作 | ('age': ("$mod': [5,0]]} | 年龄模5余0 |
| $text | 文本查询 | (search : 'Mike'l} | text类型的属性中包含Mike亨符串 |
| $where | 高级条件查询 | f"$where' : 'obj.fans_count == obj.follows_count"} | 自身粉丝数等于关注数 |
获取文档个数 count = movie.count() count = collection.find(i'level' : 10}).count()
排序
results = collections.find().sort('name',pymongo.ASCENGING)
偏移
collection.find().sort('name',pymongo.ASCENDING).skip(2).limit(2)
更新
args = {'name':'andy'}
stul = student.find_one(args)
stul['name'] = '张三'
student.update_one(args,{'$set':stul})
删除
# 符合条件的所有数据都会被删除
result = collection.remove({'name':'李四'})
# 删除一个
result = collection.remove({'name':'andy'})
# 删除多个符合条件的数据
result = collection.delete_many({'age':{'$lt':25}})
举例
import pymongo
# 链接数据库
client = pymongo.MongoClient()
# 选择实例
person = client.person
# 选择集合
student = person.student
# 操作数据
result = student.find()
print([r for r in result])
# or
# print(result.next())
# 过滤条件
result = student.find({'name':'andy'})
# 排序
result = student.find().sort('age',1)
# 分页
result = student.find().limit(6)
# 数量
student.find().count()
# 增加数据
data = {'name':'天狼星','age':100}
student.insert_one(data)
# 删除数据
student.remove(data)
# 更新数据
data = {'name':'天狼星'}
result = student.find_one(data)
result['age']=99
student.update(data,{'$set':result})