mongodb 的安装和基础语法笔记
- mongodb的安装
- windows下
- 直接去官网进行下载
- 配置系统环境变量
- 启动服务,使用电脑中的服务进行启动
net start mongodb
net stop mongodb
- 添加账号密码
- 在终端启动mongo
use admin
- 添加账户
db.createUser({ user: 'admin', // 用户名 pwd: '123456', // 密码 roles:[{ role: 'root', // 角色 db: 'admin' // 数据库 }] })
- 在安装目录中,修改mongo.cfg文件
- 将 #security 修改为
security: authorization: enabled
- 将 #security 修改为
- 在服务中关闭重启mongo
- ubuntu 上安装mongo
- 安装
sudo apt-get install mongodb
- 在Linux终端进入mongo的交互,直接输入mongo
- 启动和停止mongo
sudo service mongodb stop sudo service mongodb start
- 设置账户密码
mongo use admin db.addUser("root","密码")
- 修改配置文件
vi /etc/mongodb.conf
-
bind_ip = 0.0.0.0 或者 #bind_ip 127.0.0.1 port = 27017 auth=true (添加帐号,密码认证)
- 重启mongo,service mongodb start
- 进入mongo之后,需要使用
db.auth('user','pwd')
才能修改操作
2 mongo的命令
- 安装
- 创建数据库
use 数据库名
这个数据库存在的话会进入数据库,不存在的话会创建数据库,并切换到数据库
- 创建集合
db.createCollection("集合名")
- 查看集合
show collections
- windows下
- pymongo 的使用
- 安装pymongo
pip install pymongo
- 连接pymongo
- 方法一:
import pymongo conn = pymongo.MongoClient('mongodb://{}:{}@{}:{}/?authSource={}'.format("账号","密码","网址","端口","密码验证数据库")) db = conn.数据库名 collection = db.表名
- 方法二:
from pymongo import MongoClient client = MongoClient('localhost',27017) client.验证的数据库表(一般为admin).authenticate("用户名","密码") db = client.数据库名 collection = db.表名
- 方法一:
- 插入数据
- 使用collection.insertone或collection.insertmany
- 如果想要不重复的插入数据
collection.update_one ({'数据表中的字段1':数据['对应字段1'],'数据表中字段2':数据['对应字段2']},{'$set':数据},True) collection.update_one ({'id':data['id'],'name':data['name']},{'$set':data},True)
- 安装pymongo
- mongodb中的操作语句
- 基本命令
- 创建数据库
use 数据库名
如果数据库不存在则创建数据库名,如果存在则切换到指定数据库
- 查看所有的数据库
show dbs
- 删除
- 删除数据库
db.dropDatabase()
这样便会删除当前所在的数据库
- 删除集合
db.collection.drop()
这样会删除db后面的collection集合
- 删除数据库
- 创建集合
db.createCollection(name, options)
这样便会创建一个集合
- 插入文档
- 使用insert或save方法往集合中插入文档
db.COLLECTION_NAME.insert(document)
db.COLLECTION_NAME.save(document)
- save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
- insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
- 最新的有insertOne()和insertMany()
- 更新文档
- update() 方法用于更新已存在的文档。语法格式如下:
-
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } ) 参数说明: query : update的查询条件,类似sql update查询内where后面的。 update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 writeConcern :可选,抛出异常的级别。
- save方法,主键存在就更新,主键不存在就插入
- 删除文档
- 语法
db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } )
- 删除所有文档
db.col.remove({})
- 语法
- 查询文档
db.collection.find(query, projection)
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
db.col.find().pretty()
显示化所有文档- AND条件 ongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
- OR条件 MongoDB OR 条件语句使用了关键字 $or,语法格式如下:
- $or:[{},{}…]
- 条件操作符
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
- 使用{‘列名’:{$gt:21}}
- 模糊查询:
- 查询 title 包含"教"字的文档:
- db.col.find({title:/教/})
- 查询 title 字段以"教"字开头的文档:
- db.col.find({title:/^教/})
- 查询 titl e字段以"教"字结尾的文档:
- db.col.find({title:/教$/})
- $type操作符
- $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。
- $type:double ,String, Object ,Array ,Binary data, Object id,
Boolean ,Date, Null,Regular Expression,JavaScript ,Symbol ,JavaScript (with scope),
- Limit与Skip方法
- limit()方法基本语法如下所示:
db.COLLECTION_NAME.find().limit(NUMBER)
- 还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
- limit()方法基本语法如下所示:
- 排序
- 在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
db.COLLECTION_NAME.find().sort({KEY:1})
- 索引
- MongoDB使用 createIndex() 方法来创建索引
db.collection.createIndex(keys, options)
- 语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可.createIndex() 方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)
- 聚合
- MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果
- aggregate() 方法 MongoDB中聚合的方法使用aggregate()。
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
- 表达式
- 表达式 描述 实例
- KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …um_tutorial : {sum : “$likes”}}}])
- KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …um_tutorial : {avg : “$likes”}}}])
- KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …um_tutorial : {min : “$likes”}}}])
- KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …um_tutorial : {max : “$likes”}}}])
- KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …_user", url : {push: “$url”}}}])
- KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …_user", url : {addToSet : “$url”}}}])
- KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …, first_url : {first : “$url”}}}])
- KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …", last_url : {last : “$url”}}}])
- 创建数据库
- pymongo
- pymongo 查询出来的数据是游标的形式,需要通过list转换成数据的形式
- 基本命令