MongoDB常用命令

前言

mongoDB 最近开始做一些简单的数据查询计算功能,但是因为mongodb用的比较少,对很多的查询方法都不熟悉,因此整理了一些常用的命令,平时工作有需要时候方便查询,当然遇到一些新的也可以进行更新。

管理mongodb

创建管理员

db.createUser(
{
user: “myUserAdmin”,
pwd: “abc123”,
roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
}
)

管理员登录

mongo –port 27017 -u “myUserAdmin” -p “abc123” –authenticationDatabase “admin”

其他用户登录

mongo –port 27017 -u “myTester” -p “xyz123” –authenticationDatabase “test”

登入数据库

use nieweb

删除用户

db.dropUser(“dev”)
true

创建用户角色

db.createUser({“user”:”dev”,pwd:”dev123”,roles:[“readWrite”]})
Successfully added user: { “user” : “dev”, “roles” : [ “readWrite” ] }
show users
{
“_id” : “nieweb.dev”,
“user” : “dev”,
“db” : “nieweb”,
“roles” : [
{
“role” : “readWrite”,
“db” : “nieweb”
}
]
}

配置mongodb

修改mongodb 外部访问的IP权限
/etc/mongod.conf
修改/etc/mongod.conf
bingip改为0.0.0.0 或者外网IP

一般查询

查询

MySQL:

SELECT * FROM user

Mongo:

db.user.find()

MySQL:

SELECT * FROM user WHERE name = ‘foobar’

Mongo:

db.user.find({‘name’ : ‘foobar’})

插入

MySQL:

INSERT INTO user (name, age) values (‘foobar’,25)

Mongo:

db.user.insert({‘name’ : ‘foobar’, ‘age’ : 25})

修改集合字段

if you want add a column email on MySQL,you must :

ALTER TABLE user add email varchar(100) comment “邮箱”;

But in Mongo,you can just:

db.user.insert({‘name’ : ‘foobar’, ‘age’ : 25, ‘email’ : ‘foo@bar.com’})

删除表内容

MySQL:

DELETE * FROM user

Mongo:

db.user.remove({})

根据条件删除

MySQL:

DELETE FROM user WHERE age < 30

Mongo:

db.user.remove({‘age’ : {$lt : 30}})

其他比较符号

gt:>; gte : >= ; lt:<; lte : <= ; $ne : !=

更新

MySQL:

UPDATE user SET age = 36 WHERE name = ‘foobar’

Mongo:

db.user.update({‘name’ : ‘foobar’}, {$set : {‘age’ : 36}})

根据条件更新

MySQL:

UPDATE user SET age = age + 3 WHERE name = ‘foobar’

Mongo:

db.user.update({‘name’ : ‘foobar’}, {$inc : {‘age’ : 3}})

聚合计算

aggregate

aggregation

aggregete实例

查询满足下面集合中满足 gzh 与 channelId条件并对userNum求和。

{_id:"1",gzh:"abc",channelId:"1","date":"2017-8-01","userNum":1232}
{_id:"1",gzh:"abc",channelId:"2","date":"2017-8-02","userNum":1232}
{_id:"1",gzh:"abc",channelId:"3","date":"2017-8-03","userNum":1632}
{_id:"1",gzh:"abc",channelId:"4","date":"2017-8-04","userNum":132}
{_id:"1",gzh:"abc",channelId:"5","date":"2017-8-05","userNum":232}
{_id:"1",gzh:"abc",channelId:"6","date":"2017-8-06","userNum":123}
{_id:"1",gzh:"abc",channelId:"1","date":"2017-7-01","userNum":132}
{_id:"1",gzh:"abc",channelId:"2","date":"2017-7-02","userNum":162}
{_id:"1",gzh:"abc",channelId:"3","date":"2017-7-03","userNum":232}
{_id:"1",gzh:"abc",channelId:"4","date":"2017-7-04","userNum":432}
{_id:"1",gzh:"abc",channelId:"5","date":"2017-7-05","userNum":232}
{_id:"1",gzh:"abc",channelId:"6","date":"2017-7-06","userNum":12}
db.cllection.aggregate([
    {  $match : { gzh:"abc",channelId:"123"} },     
    { $group : { _id:"channelId", userSum:{$sum:'$userNum'} } } 
]);
MapReduce

mapReduce

mapReduce实例

根据gzh与channeId 添加下userNum的和。 其中channelId 可以是给定的任意多个。给出的collection的item如下:

{_id:"1",gzh:"abc",channelId:"1","date":"2017-8-01","userNum":1232}
{_id:"1",gzh:"abc",channelId:"2","date":"2017-8-02","userNum":1232}
{_id:"1",gzh:"abc",channelId:"3","date":"2017-8-03","userNum":1632}
{_id:"1",gzh:"abc",channelId:"4","date":"2017-8-04","userNum":132}
{_id:"1",gzh:"abc",channelId:"5","date":"2017-8-05","userNum":232}
{_id:"1",gzh:"abc",channelId:"6","date":"2017-8-06","userNum":123}
{_id:"1",gzh:"abc",channelId:"1","date":"2017-7-01","userNum":132}
{_id:"1",gzh:"abc",channelId:"2","date":"2017-7-02","userNum":162}
{_id:"1",gzh:"abc",channelId:"3","date":"2017-7-03","userNum":232}
{_id:"1",gzh:"abc",channelId:"4","date":"2017-7-04","userNum":432}
{_id:"1",gzh:"abc",channelId:"5","date":"2017-7-05","userNum":232}
{_id:"1",gzh:"abc",channelId:"6","date":"2017-7-06","userNum":12}

根据上面给出的集合,我们可以下如下的mapreduce来进行计算。

db.collection.mapReduce(
    function() {
        var channelIds = ["1",
            "2",
            "3",
           ];

            if(channelIds.indexOf(this.channelId) >= 0) {
                 emit( this.gzh,this.userNum); 
            }
    },
    function(key, values) {
        var sum = 0;
        for(var i = 0; i < values.length; i++) {
            sum = sum + values[i];
        }
        return sum;
    },
    {
        query:{gzh:"abc"},
        out:"order_totals",
        finalize:function(key, reducedVal) {
            print(reducedVal)
            return  reducedVal;
        }
    }
).find();

最后运行输入:

{ “_id” : “abc”, “value” : xxxx }

详情请参考官网文档

mongodb指导手册

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹二木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值