nosql数据库-mongodb

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)

x = col.insert_one(mydict)
print(x)

执行输出结果为:

<pymongo.results.InsertOneResult object at 0x10a34b288>

insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。

x = mycol.insert_one(mydict)
print(x.inserted_id)
执行输出结果为:
5b2369cac315325f3698a1cf
如果我们在插入文档时没有指定 _id,MongoDB 会为每个文档添加一个唯一的 id

插入多个文档

集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。

mylist = [ { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" }, { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" }, { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" }, { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" }, { "name": "Github", "alexa": "109", "url": "https://www.github.com" } ] x = mycol.insert_many(mylist) # 输出插入的所有文档对应的 _id 值 print(x.inserted_ids)

输出结果类似如下:

[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 方法被调用的时候,时间字段会自动设置并插入数据库,