1 认识
2 库,集合操作
3 crud
4 pymongo
python面向的是开源的数据库;
mysql mongdb postgreSQL REDIS都是开源的
1--Nosql
什么是NoSQL?
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
为什么使用NoSQL ?
今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。
|--1.2mongodb 是文档型存储
一个里面有很多的数据库,mongodb数据库里面存的类型是json,键值对的格式
进入命令 mongo
退出出命令 exit
|--2 隐式创建、库操作 集合操作
2.1-mongodb中的隐式创建
show dbs; 显示所有的数据库
mongo底层引擎是JavaScript
在mongodb里面空的数据库是没有意义的,use test;//切换数据库,(调用一个不存在的数据库mongdb会自动创建一个数据库),但是此时因为数据库是空的,show dbs;是看不到这个数据库的,必须给test数据库创建集合之后,再shou dbs;才能看到test数据库,这就是所谓的隐式操作
db.createCollection('xxx')
查看当前再那个数据库里面; db;
删除某个数据库,先切换到该数据库下面 use test; 再执行命令db.dropDatabase();即可删除test数据库
collection跟数据上的集合不同,
use test;
show collections; 显示集合
db.createCollection(col_name); 创建集合
db.col_nam.drop();删除集合
|--3;crud(create read update delete) 向集合中插入文档, 查询 删除文档 修改文档
db.createCollection('student')
db.student.insert({"name":"LiMing","age":10,"gender":"male"});
插入后自动生成一个id ,这个id也可以自己指定
db.student.insert({"_id":"1","name":"Anny","age":20,"gender":"femal"})
没有格式限制 插入多个数据的时候,插入的字段可以不一致,只要是json的格式就可以了
db.student.insert([ {"name":"张三","age":"20"},{"name":"李四","gender":"male"} ])
Create Operations
创建操作或者插入操作会向集合添加新的文档。之前有提到过,如果插入时集合不存在,插入操作会创建对应的集合。MongoDB 提供了 3 个插入文档的方法:
`db.collection.insert()``db.collection.insertOne()``db.collection.insertMany()`
||--插入单个文档
其中,`db.collection.insertOne()` 用于向集合插入单个文档。而 `db.collection.insertMany()` 和 `db.collection.insert()` 可以向集合插入多个文档。`db.collection.insertOne()` 示例如下:
自动命令执行后会返回一个结果文档,文档输出如下:
这说明文档插入成功。其中,`acknowledged` 代表本次操作的操作状态,状态值包括 `true` 和 `false`。`insertedId` 即该文档的 `_id`。
提示:示例中的省略号是 MongoShell 的换行标识符。换行标识符对命令输入和执行并没有影响,所以本文也不会注重风格的统一,即示例中有时会带有换行符,有时则不带有换行符。
||--插入多个文档
`db.collection.insertMany()` 示例如下:
由于本次插入了 2 个文档,所以返回的结果文档会显示两个 `_id`。返回文档内容如下:
查找删除
db.student.find(); 无条件查找,查出所有东西
按照条件查找
查找gender 是 male的,height是160的数据
db.student.find({“gender”:"male","height":160})
只显示出姓名,第一个大括号是查询的条件,第二个大括号是要显示的字段
db.student.find({“name”:"LiMing"},{"age":true,"gender":false,"_id":false})
查找所有人的姓名,年龄,第一个大括号空,表示查找所有的数据,第二个表示显示的字段
db.student.find({},{"age":true,"_id":false,"name":true})
删除:
db.student.remove({}) 删除所有
db.studentremove({"height":160}) 删除身高160的数据
每次挑选一个淘汰,db.student.remove({"gender":"male"},{justOne"true}) ,删除第一个匹配的男生
修改update,修改LiMing 的身高为 170,这个语句是覆盖性的修改,修改后就只剩下了name 和height,所以要使用$set参数,只修改不覆盖
db.student.update({"name":"LiMing"},{"height":170})
update默认只是更新一条数据,所以一定要加 multi参数设置为true
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})如果你要修改多条相同的文档,则需要设置 multi 参数为 true
pymongo
pymongo.MongoClient 客户端
#连接mongdb
client=MongoClient('127.0.0.1','27017') 默认的ip和端口号这是,不填默认就是这个 ,客户端
#选择mongodb里面的数据库
mydb = client['dbname'] #数据库
col=mydb['student'] #集合
插入文档:
mydict = { "name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com" } x = mycol.insert_one(mydict)
执行输出结果为:
<pymongo.results.InsertOneResult object at 0x10a34b288>
insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。
5b2369cac315325f3698a1cf
插入多个文档
集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。
输出结果类似如下:
[ObjectId('5b236aa9c315325f5236bbb6'), ObjectId('5b236aa9c315325f5236bbb7'), ObjectId('5b236aa9c315325f5236bbb8'), ObjectId('5b236aa9c315325f5236bbb9'), ObjectId('5b236aa9c315325f5236bbba')]
更多教程见 菜鸟教程
https://www.runoob.com/mongodb/mongodb-operators.html
java--mongodb
配置:1 依赖 2 配置文件的配置
3 注解;
启动类
@EnableMongoAuditing
@Document(collection="表名")
@CreatedDate
表示该字段为创建时间时间字段,在这个实体被insert的时候,会设置值 ,在jpa.save方法被调用的时候,时间字段会自动设置并插入数据库,