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

  • 相关阅读:
    【drp 11】使用Junit简单测试接口方法
    【Struts 1】Struts1的基本原理和简介
    【drp 10】JSP页面中model1和model2的区别
    【drp 9】Servlet生命周期
    【Nginx 3】FTP远程文件下载
    [drp 8]get和post的区别,以及乱码问题的解决
    svn update错误
    easyui只打开一个tab
    ubuntu安装skype
    单独使用CKfinder上传图片
  • 原文地址:https://www.cnblogs.com/wsnan/p/11792644.html
Copyright © 2020-2023  润新知