Mongodb数据库

2018-12-30  本文已影响0人  瘦不下去了

什么是Mongodb数据库?

MongoDB特点

三元素

数据库基本命令

关于增删改查的操作

插入数据

插入数据时如果没有指定,_id会帮您自动生成一个,也可以自己指定
这个id既是主键,也是一个索引

更新数据update

)

格式化输出

db.集合名称.find().pretty()

删除数据

查询

比较运算符

db.集合名称.find(
{time:{$gte:100}}
)

多条件查询
db.集合名称.find(
{
time:{$ge:100},
actors:'李连杰'
}
)

逻辑或¥$or

db.movie.find(
{
$or:
[

{ time : {$gt:100}},
{autor:'李连杰'}
],
'title':'少林寺'
}
)

范围运算符

$in:在..范围

使用正则查询

db.集合名称.find(
{
key:/^正则表达式/
}
)

db.集合名称.find(
{
key:{$regex:'正则表达式'}
}
)

$type 只返回符合数据类型的文档

db.集合名称.find(
{

key:{$type:'数据类型'}
}
)

limit 限制返回

skip 跳过指定的条数

db.集合名称.find().limit(num).skip(num)
注意:limit和skip先后顺序不影响结果

sort jinxing paixu 1:升序: -1:降序

db.集合名称.find.sort({key:方向(1 or -1),key2:方向(1 or -1)})

去重

db.集合名称.distnict(
‘去重字段’,
{'条件'}

投影:project,可以选择查询结果中,数据的展示和隐藏

0表示隐藏,1表示显示
db.集合名称.find(
{'条件'}
{'key':1}
)
假如再设置要显示的字段时,第一个字段设置为1,只展示这一个,其他的都不展示
繁殖。只隐藏当前的字段,其他的字段都会展示出来

count:统计文档个数

db.集合名称.count(
{'条件'}
)

db.集合名称.find({'条件'}).count()

mongodb的聚合

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

管道的概念

聚合框架常用的操作

聚合的表达式:

db.mycol.aggregate(
    [
        {$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}
    ]
)
db.mycol.aggregate(
    [
        {$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}
    ]
)
db.mycol.aggregate(
    [
        {$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}
    ]
)
db.mycol.aggregate(
    [
        {$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}
    ]
)
db.mycol.aggregate(
    [
        {$group : {_id : "$by_user", url : {$push: "$url"}}}
    ]
)
db.mycol.aggregate(
    [
        {$group : {_id : "$by_user", first_url : {$first : "$url"}}}
    ]
)
db.mycol.aggregate(
    [
        {$group : {_id : "$by_user", last_url : {$last : "$url"}}}
    ]
)
db.article.aggregate(
    [
        {$group:{_id:'$by_user',counter:{$sum:1}}}
    ]
)
db.article.aggregate(
    [
        {$group:{_id:null,counter:{$sum:1},likes:{$avg:"$likes"}}}
    ]
)
db.article.aggregate(
    [
        {$project:{by_user:1}}
    ]
)

db.article.aggregate(
    [
        {$project:{by_user:1,id:0}}
    ]
)
db.article.aggregate(
    [
        {$match:{likes:{$gt:0,$lte:20}}},
        {$project:{title:1,_id:0}}
    ]
)
db.article.aggregate(
    [
        {$limit:2}
    ]
)
db.article.aggregate(
    [
        {$skip:2}
    ]
) #在聚合管道中跳过指定数量的文档,并返回余下的文档。
db.article.aggregate(
    [
        {$match:{likes:{$gt:0,$lte:20}}},
        {$skip:2},
        {$project:{title:1}}
    ]
)

db.article.aggregate(
    [
        {$match:{likes:{$gt:0,$lte:20}}},
        {$skip:1},
        {$limit:1},
        {$project:{title:1}}
    ]
)
db.article.aggregate(
    [
        {$match:{likes:{$gt:0,$lte:800}}},
        {$sort:{likes:-1}}
    ]
)
db.article.aggregate(
    [
        {$unwind:'$tags'}
    ]
)

Mongodb管理员权限(安全方面)

超级管理员
为了更安全的访问mongodb,需要访问者提供用户名和密码,于是需要在mongodb中创建用户
采用了角色-用户-数据库的安全管理方式 常用系统角色如下:

创建超级管理用户

use admin
db.createUser(
    {   
   user:'admin',
    pwd:'123',
    roles:[{role:'root',db:'admin'}]
    }
)

Mongodb的备份和恢复

MongoDB 备份(mongodump)
在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。

mongodump -h dbhost -d dbname -o dbdirectory

mongodump -h 127.0.0.1:27017 -d 数据库名称 -o ~/Desktop/数据库备份的路径
mongodump -h 127.0.0.1:27017 -o ~/Desktop/数据库备份的路径

mongodump -u username -p password --authenticationDatabase 'admin' -d dbname -o dbpath

恢复备份
mongodb使用 mongorestore 命令来恢复备份的数据。

mongorestore -h hostname:port -d dbname --dir path

mongorestore -h 127.0.0.1:27017 -d 数据库名称 --dir 数据库备份文件路径
mongorestore -h 127.0.0.1 -dir 数据库备份文件路径

如果开启了权限设置(使用超级管理员权限)

mongorestore -u username -p password --authenticationDatabase 'admin' -d 数据库名称 --dir 数据库备份文件路径

MongoDB数据导入与导出
导出工具:mongoexport

mongoexport -d dbname -c collectionname -o file --type json/csv -f field
参数说明:

示例:

导出json

mongoexport -d class1804 -c books -o ~/桌面/dump/books.json --type json

导出csv

mongoexport -d class1804 -c books -o ~/桌面/dump/books.csv --type csv -f 'by_user,likes'

数据导入:mongoimport

mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv

参数说明:

示例:

导入json

mongoimport -d class1712B -c books --file ~/桌面/dump/books --type json

导入csv

mongoimport -d class1712B -c info --file ~/桌面/dump/

上一篇下一篇

猜你喜欢

热点阅读