mongodb安装,库操作,集合操作(表),文档操作(记录)

安装

1.下载地址
https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msi
2.如果报没有权限的错,将配置文件的.cfg的最后一行的mp:删除
3.4.0版本已将mongodb加入了系统服务,开机自启
win+R>>>服务>>>mongodb
4.此时没有任何的权限限制,默认是管理员
5.在.cfg文件中修改
security:
    authorization: enabled
# 注意缩进
6.重启服务
7.mongo >>>>show  dbs(未登陆没有任何库显示)
8.登陆 use admin
	db.auth("root","root")>>>>>1登陆成功后显示1
 show dbs>>>登陆成功后显示所有库

库的操作

创建数据库
use 数据库名称 #如果数据库存在切换,如果不存在新建并切换
#新建的库里没有没有数据,使用show dbs是不会显示的

查看数据库
show dbs

删除数据库
db.dropDatabase()
#区分大小写

集合的操作(相当于mysql的表)

use 数据库 先切到数据库
#创建集合
db.user

#查看集合
show collections or show tables#与库相同,集合中没有数据不会显示

#删除集合:
db.blog.user.drop()

数据类型

#null:用于表示空或不存在的字段
{"x":null}
#布尔型:true 和 false
{"x":true,"y":fasle}
#数值
{"x":3,"y":3.1414}
#字符串
{"name":"egon"}
#日期
d = {"x":new Date()}
d.x.getHours()
#正则表达式/ /
d={'pattern':/^egon.*?nb$/i}
#数组
d={'x':[1,'a','v']}
#内嵌文档
user={'name':'jerry','addr':{'country':'China','city':'YT'}}
user.addr.country
#对象id:是一个12字节的ID,是文档的唯一标识,不可变
d={'x':ObjectId()}

#案例:
db.test.insert({"a":null,"b":1.1,"c":true,"d":100,"e":"aaaaaa","f":new Date(),"g":/^jerry.*nice$/i,"h":[1,2],"j":{"name":"smallJerry"}})

db.tb.find()
db.tb.find().pretty() # 格式化显示 findOne没有pretty()方法

文档操作

#没有指定_id则默认ObjectID,_id不能重复,且在插入后不可变

#插入单条
db.test.insert({"_id":1,"name":"zb","age":18})
#无则插入,有则覆盖
db.test.save()
#插入多条
db.test.insertMany([{"_id":2,"name":"egon","age":28},{"_id":3,"name":"yhh","age":38}])

查询数据

#cmd清屏 cls
#find
查询所有匹配数据
#findOne
查找第一个匹配的

比较运算

use db
db.表名.find(条件)
比较运算
#等于
= >>>> {"name":"zb"}
db.test.find({"name":"zb"})
#不等于
!= >>>>{"name":{"$ne":"zb"}}
db.test.find({"name":{"$ne":"zb"}})
#大于
>  >>>>{"_id":{"$gt":1}}
db.test.find({"_id":{"$gt":1}})
#大于等于
>= >>>>{"_id":{"$gte":1}}
db.test.find({"_id":{"$gte":1}})
#小于
<  >>>>{"_id":{"$lt":3}}
db.test.find({"_id":{"$lt":3}})
#小于等于
<= >>>>{"_id":{"lte":3}}
db.test.find({"_id":{"$lte":3}})

逻辑运算

#and 逗号分隔,多个条件就是and
db.test.find({"_id":{"$lt":3,"$gt":1}})

db.test.find({"_id":{"$lte":3,"$gt":1},"name":"egon"})

#or
db.test.find({"$or":[{'_id':{"$gte":3}},{"name":"zb"}]})

#偶数 mod
db.test.find({'_id':{"$mod":[2,1]}})#[2,1]>>除2余1

#not
db.test.find({'_id':{"$not":{"$mod":[2,1]}}})

成员运算

#in
db.test.find({"_id":{"$in":[1,3]}})

#not in
db.test.find({"_id":{"$nin":[1,3]}})

正则表达式

db.test.find({"name":/.*?z.*?/})

正则写在//内,后面的i代表:
i 忽略大小写
m 多行匹配模式
x 忽略非转义的空白字符
s 单行匹配模式

指定字段

#db.user.finde({过滤条件},{显示字段})
db.test.find({'_id':3},{'_id':0,'name':1})
0表示不显示 默认为0  1为显示 "_id"默认为1

查询数组

#准备数据
use test1
db.user

user1 = {"_id":1,"name":"egon","hobbies":["play","girl","music","run"]}

user2 = {"_id":2,"name":"alex","hobbies":["swim","girl","drink","tea"]}

user3 = {"_id":3,"name":"yhh","hobbies":["girl","tea","fight","run"]}

user4 = {"_id":4,"name":"aaa","hobbies":["run","girl","chicken","ball"]}

db.user.insert(user1)
db.user.insert(user2)
db.user.insert(user3)
db.user.insert(user4)

#查询

#查询爱好有girl的人
db.user.find({'hobbies':'girl'})

#查询爱好girl和drink的人
db.user.find({"hobbies":{"$all":["girl","drink"]}})

#查询第4个爱好为tea的人
db.user.find({"hobbies.3":"tea"})

#查询所有人最后两个爱好
db.user.find({},{'hobbies':{"$slice":-2}})

#查询所有人的第2个到第3个爱好
db.user.find({},{"hobbies":{"$slice":[1,2]}})

其他

# 排序:1代表升序,-1代表降序
db.user.find().sort({"_id":-1})
db.user.find().sort({"name":-1,'_id':-1})

#分页:limit代表取多少个document,skip代表跳过前几个document

db.user.find({'hobbies':'girl'}).limit(1).skip(2)


#获取数量
db.user.count({'hobbies':'girl'})
db.user.find({'hobbies':'girl'}).count()



#{'key':null} 匹配key的值为null或者没有这个key
#准备数据
db.t2.insert({'a':10,'b':111})
db.t2.insert({'a':20})
db.t2.insert({'b':null})


#查询结果
> db.t2.find({"b":null})
{ "_id" : ObjectId("5a5cc2a7c1b4645aad959e5a"), "a" : 20 }
{ "_id" : ObjectId("5a5cc2a8c1b4645aad959e5b"), "b" : null }
posted @ 2019-04-15 17:34  robertzhou  阅读(291)  评论(0编辑  收藏  举报