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)