zoukankan      html  css  js  c++  java
  • 非关系型数据库--MongoDB

    MongoDB是一个著名的NoSQL数据库,顾名思义就是不使用SQL的数据库,目前在很多场景都有使用。如果你不喜欢使用笨拙的各种SQL数据库,可以尝试使用一下MongoDB,会有不一样的感受。本文就是一篇简单的Windows下的安装和使用教程。

    下载安装与配置转载于 https://blog.csdn.net/u011054333/article/details/78588396

    下载和安装

    首先,先到MongoDB官网下载页下载社区版的服务器,由于这里是Windows系统,所以当然下载Windows版本的。注意我们要下载的是社区版,而不是导航条第一个的Atlas。如你所见,MongoDB官网是一个商业化的网站,Atlas正是它提供的一个商业版服务,可以让我们连接到他们的服务器。

     

    具体版本默认第一个就可以了,功能最全,带有SSL支持。注意三个版本都是64位的,所以32位的操作系统无法运行。下载完成之后安装即可,大约150M左右的安装包,很快就可以安装完毕。

    配置和启动

    对于我来说,我将其安装到了D:Program FilesMongoDB。等到安装完成,打开D:Program FilesMongoDBServer3.4in就会发现MongoDB的一系列程序,主要用到的就是mongo.exe(客户端)和mongod.exe(服务端)。为了使用方便,最好把这个路径添加到环境变量中,以后就可以直接在终端中使用这些命令了。首先要做的事情当然是启动服务端。在终端直接执行mongod命令即可。

    mongod

    然后你就会发现如图所示的错误。

    当然具体错误图里面说的很清楚了,没有数据文件夹。默认Windows版本,会在你安装盘符下寻找data/db文件夹作为数据文件夹,我的D盘上自然没有,所以会出现错误。解决办法很简单,在命令上添加--dbpath参数即可。

    mongod --dbpath d:	estmongodbdata

    当然还可以使用配置文件。配置文件名字可以随便起,但是格式必须是YAML格式的。例如我希望让可执行文件目录下的data文件夹作为数据文件夹,并且对于每个单独的数据库都有自己的目录,就可以这么配置(别忘了创建对应文件夹)。关于配置文件的详细文档可以参考官方Configuration File Options

    storage:
    dbPath: data
    directoryPerDB: true

    配置完成后,使用-f或者--config参数来指定配置文件。

    mongod --config /etc/mongod.conf
    mongod -f /etc/mongod.conf

    这样,MongoDB服务器就可以成功启动了。

    MongoDB的基本操作与使用

    前戏

      启动MongoDB:mongod --dbpath "数据库目录",默认端口27017

      show dbs 查看所有存在磁盘上的数据库

      show tables 查看当前数据库存在磁盘上的数据表

      use "数据库名"  创建数据库或切换数据库

     ***使用了不存在的对象即创建该对象***

    MongDB的数据

    	[
    		{
    			"id":1,
    			"name":"wbj",
    			"age":18,
    			"hobby":["lqy","lys"],
    			"duixiang":{
    				"id":2,
    				"name":"lqy",
    				"age":16
    			}
    		},
    		{
    			"id":2,
    			"name":"lqy",
    			"age":16,
    			"duixiang":{
    				"id":1,
    				"name":"wbj",
    				"age":18,
    			}
    		}
    	]

     

    MongDB和Mysql的区别

    mysql      mongodb
    数据库         数据库
    表            collections
    列                Field
    row           documents

    数据的增删改查

    增加 insert

    db.user.insert({"id":1,"name":"cui","age":73})
    

     官方推荐写法

    db.user.insertMany([{ }])
    db.user.insertOne({ })

    查看 find

    db.user.find()  #查找全部
    db.user.finOne({})
    

     并列条件:

    db.user.find({"id":2,"age":85})

    或条件:

    $or: db.user.find({$or:[{age:18},{name:"lqy"}]})
    

    同一字段的 或条件

    $in: db.user.find({age:{$in:[17,18,19]}})
    

    子集检索

    db.user.find({what:{$in:[2,1]}})
    

    $all:满足所有条件

    db.user.find({what:{$all:[2,1,3]}})

    数学比较符:

    $gt : 大于 db.user.find({age:{$gt:73}})
    $gte : 大于等于
    $lt : 小于
    $lte : 小于等于
    $eq : 等于 
    : 也是等于
    

    更新 :update  修改器 $set

    db.user.update({"age":18},{$set:{"username":"cui"}})

    官方推荐写法:

    db.user.updateOne({"name":"lqy"},{$set:{"age":99}})
    db.user.updateMany({"name":"lqy"},{$set:{"age":99}})
    

    删除:remove / delete

    db.user.remove({"age":18})
    

    官方推荐写法:

    db.user.deleteOne({"name":"lqy"})
    db.user.deleteMany({"name":"lqy"})
    

    $修改器:

    $set : 暴力修改
    $unset : 暴力删除字段 db.user.updateOne({"name":"wbj"},{$unset:{"hobby":1}})
    $inc : 引用增加,在原有值的基础上增加 db.user.updateMany({},{$inc:{age:1}})

    array修改器:

    $push 增加元素 : db.user.updateOne({"name":"lqy"},{$push:{"hobby":"ball"}})
    $pull 删除元素: db.user.updateOne({"name":"lqy"},{$pull:{"hobby":"ball"}})
    $pushAll 迭代增加 : db.user.updateOne({"name":"lqy"},{$pushAll:{"hobby":["ball1","ball2","ball3"]}})
    $pop 删除最后一条/第一条数据 :
      最后一条 db.user.updateOne({"name":"lqy"},{$pop:{"hobby":1}})
      第一条 db.user.updateOne({"name":"lqy"},{$pop:{"hobby":-1}})

    $字符:

    ["hj","tt",1,2] # {"hobby":"hj"} hj 是hobby列表中的第0个元素 就把 0 这个数据放在了 $ 中

    db.user.updateMany({hobby:"hj"},{$set:{"hobby.$":"喝酒"}})
    ****$: 存储符合条件的元素下标索引****

    Object操作

    db.user.updateOne({"book.name":"python"},{$set:{"book.price":19.9}})
    db.user.updateOne({"book.name":"python"},{$inc:{"book.price":9.9}})
    

    Array中的Object操作

    db.user.updateOne({"hobby.age":84},{$set:{"hobby.$.age":73}})
    

    Object中的Array

    db,user.updateOne({"kecheng.class":15},{$set:{"kecheng.class.$":20}})
    

    数据类型

    ObjectID : Documents 自动生成的 _id
    String : 字符串,必须是utf-8
    Boolean : 布尔值,true或者false (只有python中写法是True,False)
    Integer:整数(Int32,Int64)
    Double : 浮点数(没有float类型,所有小数都是Double)
    Arrays : 数组或者列表,多个值存储到一个键(相当于python中的list)
    Object : 相当于python中的字典
    Null : 空数据类型,一个特殊的概念,None Null
    Timestamp : 时间戳(常用)
    Date : 存储当前日期或时间unix时间格式(一般不用)

    MongoDB中的跳过选取排序:

    skip(5) 跳过五条数据
    limit(5) 只显示五条数据
    分页 skip(5).limit(5)
    
    sort({age:1})  正序
    sort({age:-1}) 倒序
    
    如果三个关键字同时出现:
    顺序1.sort 2.skip 3.limit

     使用pymongo:

    find_one
    insert_one
    insert_many
    update_one
    update_many
    delete_one
    delete_many
    
    sort("key",1)
    

      

  • 相关阅读:
    jmeter配置mysql数据库步骤
    postman断言分析
    API测试工具postman使用总结
    量化投资与Python之NumPy
    量化投资与Python
    排序
    node.js
    VUE之搭建脚手架
    VUE之ECMAScript6(es6)
    VUE之随笔小总结1
  • 原文地址:https://www.cnblogs.com/liuqingyang/p/10277571.html
Copyright © 2011-2022 走看看