MongoDB简介:
MongoDB是非关系型数据库,NoSQL,面向文档,其内存储的是一种json-like结构化数据,它介于关系数据库和非关系数据库之间。
主要解决:
a、对数据库高并发的需求
b、对海量数据的高效率存储和访问的需求
c、对数据库的高可扩展性和高可用性的需求
下载地址:https://www.mongodb.com/download-center?jmp=nav#community
安装成功之后
安装注意事项:
我的电脑-属性-高级系统设置-环境变量 编辑path
添加 D:\soft\MongoDB\bin
1、启动方法一:
1、在mongoDB安装目录下创建一个data、log文件夹,并创建一个mong.conf文件,内容如下:
dbpath=D:\MongoDB\data\db #数据库路径 自己对应自己安装的
logpath=D:\MongoDB\logs\mongo.cfg #日志输出文件路径 自己对应自己电脑的
logappend=true #错误日志采用追加模式
journal=true #启用日志文件,默认启用
quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
port=27017 #端口号 默认为27017
管理员身份运行cmd:
> mongod --config "D:\soft\MongoDB\mongo.conf" --install --serviceName "MongoDB"
net start MongoDB
MongoDB 服务正在启动 ..
MongoDB 服务已经启动成功。
> mongo
2、启动方法二:
1、进入cmd,启动MongoDB
mongod –dbpath D:\soft\MongoDB\data\
2、进入MongoDB
mongo
创建数据库test/切换数据库:
>use score
查看数据库:
>show dbs
查看在哪个数据库下:
>db
创建数据表:
>db.createCollection("集合名") #集合名就是表名
删除数据库
db.dropDatabase()
查看表/集合
show tables
show collectiions
删除表
db.students.drop()
true #代表删除成功
插入数据有insert和save两种方法
> db.score.insert("name":"张三","subject":"数学","socre":90)
> db.score.save({"name":"李四","subject":"语文","score":80})
查看数据:
> db.score.find()
结果如下:
{ “_id” : ObjectId(“5b025eccb51d0400c6c20f72”), “name” : “张三”, “subject” : “数学”, “socre” : 90 }
{ “_id” : ObjectId(“5b025f3bb51d0400c6c20f73”), “name” : “李四”, “subject” : “语文”, “score” : 80 }
插入文档:
> db.score.insert({title:"MongoDB overview",description:"MongoDB is a Nosql database",url:"http://www.yiibai.com",tags:["MongoDB","Nosql","database"})
插入多个数据: db.score.insert({},{},.....)
> db.score.insert([{name:"张三",subject:"地理",score:88},{name:"李四",subject:"语文",score:87}])
结果如下:
{ “_id” : ObjectId(“5b026102b51d0400c6c20f76”), “name” : “张三”, “subject” : “地理”, “score” : 88 }
{ “_id” : ObjectId(“5b026102b51d0400c6c20f77”), “name” : “李四”, “subject” : “语文”, “score” : 87 }
美化查看:
> db.score.find().pretty()
$set,修改和condition条件相匹配的数据,只修改单条数据
> db.score.update({score:45},{$set:{subject:"数学"}})
直接将匹配到的数据替换成data,只修改单条数据
> db.score.update({score:45},{subject:"数学"})
结果如下:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
更新多条数据,需要加multi
> db.score.update({score:45},{$set:{name:"Jerry"}},{multi:true})
修改字段名:
> db.score.update({"_id" : ObjectId("5b025eccb51d0400c6c20f72")},{$rename:{"socre":"score"}})
save() 新增不匹配:如果save不是用id作为查找条件,name则直接插入新的数据
> db.score.save({name:"Mary",subject:"历史",score:90})
结果如下:
WriteResult({ "nInserted" : 1 })
注意:如果不跟条件,会把此数据库的所有集合都删掉
语法:
db.collectionName.remove(condition,justOne)
condition:删除数据的条件
justOne:是否只删除一条匹配到的数据
> db.score.remove({name:"Mary1"}) #删除匹配到的所有数据
> db.score.remove({name:"张三"},true/1) #加上true或者1,会删除一条
删除所有的数据:
> db.score.remove({})
语法:
> db.collectionName.find()
查询所有数据:
> db.score.find()
美化查询的数据:
> db.score.find().pretty()
查找一条数据:
> db.score.findOne()
比较语法:
less than {$lt} #小于
less than equals {$lte} #小于等于
greate than {$gt} #大于
greate than equals {$gte} #大于等于
not equals {$ne} #不等于
例子:
查询where语句
> db.score.find({name:"张三"})
查询数据小于50:
> db.score.find({score:{$lt:50}})
查询数据不等于60 !=
> db.score.find({score:{$ne:46}})
逻辑条件查询:
and查询:
> db.score.find({{subject:"地理"},{subject:"语文"}})
or查询:
db.score.find({$or:[{subject:”地理”},{subject:”语文”}]})
and和or:
查找学科为语文或者地理并且分数大于87的所有数据:
> db.score.find({$or:[{subject:"地理"},{subject:"语文"}],score:{$gt:87}})
限制查询:
只查3条数据:
> db.score.find().limit(3)
查询第四条到第六条,skip()是跳过几条
> db.score.find().limit(3).skip(3)
String : 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。
Integer : 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。
Boolean : 此类型用于存储一个布尔值 (true/ false) 。
Double : 这种类型是用来存储浮点值。
Min/ Max keys : 这种类型被用来对BSON元素的最低和最高值比较。
Arrays : 使用此类型的数组或列表或多个值存储到一个键。
Timestamp : 时间戳。这可以方便记录时的文件已被修改或添加
Object : 此数据类型用于嵌入式的文件。
Null : 这种类型是用来存储一个Null值。
Symbol : 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。
Date : 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。
Object ID : 此数据类型用于存储文档的ID。
Binary data : 此数据类型用于存储二进制数据。
Code : 此数据类型用于存储到文档中的JavaScript代码。
Regular expression : 此数据类型用于存储正则表达式。