伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

[face_数据库篇] Mongodb

来源:本站原创 浏览:135次 时间:2022-02-27

数据库之Mongodb

  • 特点

c++编写,分布式文件数据库,键值存储,易扩展

默认端口:27107

键值的值支持几乎所有的数据类型:数字,字符串,列表,时间,空null,字典

  • 与关系性数据库的区别
  • ����,����

表 ---> collection 集合

列 ---> field 字段

行 ---> document 文档

主键 ---> _id

  • mongodb思想:使用了一个不存在的对象,即没有创建该对象时可直接用,当添加了数据就自动创建了

  • 常用命令

$ mongo # shell环境进入mongo

show dbs:显示数据库列表
show collections:显示当前数据库中的集合(类似关系数据库中的表table)
show users:显示所有用户
use yourDB:切换当前数据库至yourDB
db :查看当前库
db.dropDatabase() :删库
db.help() :显示数据库操作命令
db.yourCollection.help() :显示集合操作命令,yourCollection是集合名
MongoDB没有创建数据库的命令,如果你想创建一个“School”的数据库,先运行use School命令,之后做一些操作(如:创建聚集集合db.createCollection('teacher')),这样就可以创建一个名叫“School”的数据库

  • 为某个库创建用户
> use my_mongoswitched to db my_mongo> db.createUser(... {... user:'python',... pwd:'123456',... roles:[{role:'readWrite',db:'my_mongo'},{role:'read',db:'test'}]... }... )
  • 登录
#注意使用双引号而非单引号mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin"# 或mongouse admindb.auth("root","123")
  • python操作mongodb
from pymongo import MongoClient# 创建连接mo_cli = MongoClient('mongodb://python:123456@localhost:27017/my_mongo')# 连接到数据库db = mo_cli.my_mongo# 获取数据库中所有的集合collist = db.collection_names(include_system_collections=False)# 创建集合table_dep = db.dep# 增# 向集合中插入数据table_dep.insert_one({'name': '商务部'})# 插入多条li = [{"name": "Taobao", "alexa": "100", "url": "https://www.taobao.com"},    {"name": "QQ", "alexa": "101", "url": "https://www.qq.com"},    {"name": "Github", "alexa": "109", "url": "https://www.github.com"}]table_dep.insert_many(li)# 查# 根据条件查询 : db.db_name.col_name.find({"条件"}) 条件为空查询所有# 查询单条直接返回值res = table_dep.find_one({'name': 'QQ'})# 查询多条需要for循环ret = table_dep.find({'name': 'QQ'})print(ret, type(ret))  # <pymongo.cursor.Cursor object at 0x7f557d6e9f60> <class 'pymongo.cursor.Cursor'>for i in ret:   print(i)# 改# 更新 update({条件},{待修改关键字})table_dep.update_one({'alexa': {'$gte': 109}}, {"$set":{'name': 'xxxxxxx'}})table_dep.update_many({'alexa': {'$gte': 109}}, {"$set":{'name': 'xxxxxxx'}})table_dep.save({'name':888888})  # 直接存,如果有相同的name则覆盖# 删table_dep.remove({'alexa': "100"})  # 指定条件删除,如果不指定则清空集合# 关键字$及$修改器 $set $inc $push $pull $pop# $ 代表的是下标,位置db.table.update_one({"score":30}, {"$set":{"test_list.0":9}})  # 修改满足条件的,列表索引为0的元素为9&db.table.update_one({"score":30,"test_list":2}, {"$set":{"test_list.$":9}})   # 将列表元素为2的改为9# 表较运算符 $gt\$lt\$gte\$lte等db.table_name.find_one({"score":{"$gt": 80}})  # 获取分数大于80的# 自动自增$incdb.table_name.update_one({"score":59}, {"$inc":{"score":1}})  # 为分数为59的,增加1分#删除字典中一个键值$unsetdb.table_name.update_one({"name":"qq"}, {"$unset":{"age":30}})   # 将名字为qq的age键值删掉,相当于删除字段# 向列表 尾部 中添加元素$pushdb.table_name.update_one({}, {"$set":{"china_list":[11,22,33]}})  # 向原有数据的字典中添加一个数组字段db.table_name.update_one({"name":"xiu"}, {"$push":{"china_list":77}})  # 向name为xiu的字段china_list中尾部添加一个元素77# 从列表中删除用$pulldb.table_name.update_many({"name":"xiu"}, {"$pull":{"china_list":77}})  # 将所有满足条件的列表中77元素删除# 指定位置删除 $popdb.table_name.update_many({"name":"xiu"}, {"$pop":{"china_list":1}})   # 1表示最后一个,-1表示第一个# 聚合操作:筛选($match)、投射($project)、分组($group)、排序($sort)、限制($limit)、跳过($skip)db.emp.aggregate({"$group":{"_id":$分组字段, "新的字段名":聚合操作符}})# 查每个用户,关联了多少项目db.emp.aggregate([{$group : {_id : "$by_user", pro_num_count : {$sum : 1}}}])

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net