zoukankan      html  css  js  c++  java
  • 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方法被调用的时候,时间字段会自动设置并插入数据库,

  • 相关阅读:
    MFC tab页面中获到其它页面的数据
    sqlite数据库中"Select * From XXX能查到数据,但是Select DISTINCT group From xxx Order By group却查不出来
    关闭程序出现崩溃(exe 已触发了一个断点及未加载ucrtbased.pdb)
    springboot 通用Mapper使用
    springBoot 发布war包
    springCloud Zuul网关
    springboot hystrix turbine 聚合监控
    springBoot Feign Hystrix Dashboard
    springBoot Ribbon Hystrix Dashboard
    springBoot Feign Hystrix
  • 原文地址:https://www.cnblogs.com/wsnan/p/11792644.html
Copyright © 2011-2022 走看看