搜档网
当前位置:搜档网 › MongoDB使用说明

MongoDB使用说明

MongoDB使用说明
MongoDB使用说明

MongoDB使用说明(基于2.2.2版本)

启动数据库

https://www.sodocs.net/doc/838782676.html,/downloads

首先将下载下来的MongoDB包解压,文件夹里有一个bin目录,打开终端cd到该目录中,比如我将其解压至D:\mongodb,则cd至D:\mongodb\bin,录入

mongod -dbpath=D:\mongodb\data -logpath=D:\mongodb\logs\mongodb.log 其中-dbpath=D:\mongodb\data代表数据文件存放地点,可以任意更改到指定目录中;

-logpath=D:\mongodb\logs\mongodb.log代表日志文件存放地点,可以任意更改到指定目录中;

以上两个文件或文件夹必须要先存在才能执行成功,不存在的话则自己手动创建。进入控制台

启动成功后,再打开一个终端,cd至D:\mongodb\bin目录,输入

mongo

即可进入mongoDB控制台。

添加用户

命令:

db.addUser(’username’,‘password’,‘是否只读true|false(default)');

比如我键入db.addUser(‘root’,’root’);则创建了用户名为root的有写权限的用户。执行命令:

show users;显示用户

可以查看到已经创建好的root用户数据。在这里添加的账户都将是超级管理员账户。

我们创建这个root就是个超级管理员。

MongoDB默认情况下是区分大小写的

安全认证

建好了用户后,为了信息安全的设置,需要先退出控制台,并且关掉数据库使用命令mongod -dbpath=D:\mongodb\data -logpath=D:\mongodb\logs\mongodb.log -auth 再次启动;

其中-auth代表开启安全认证检查。

启动成功后再次进入控制台,此时键入命令show users;会提示error,原因为当前没有经过用户认证,无权限做任何操作。命令:

db.auth('root','root');

使用刚刚创建好的root账户登录,返回1为认证成功,0为失败。

认证成功之后,即可以进行读写操作。

若使用只读的账户进行登录,则只可以进行读的操作。

一般为了信息的安全,认证这一步必不可少,所以以后我们默认规定需要通过-auth这样的方式来启动MongoDB数据库。

创建数据库

MongoDB是非关系型的数据库,与我们传统使用过的mysql、oracle这类关系型数据库大相径庭。在控制台中键入help可以看到一些基本操作命令。在MongoDB中,传统的数据表不再称为table,而被叫做collection(集合)。而这些collection也与以往的一样,是属于一个database里的。要有数据录入首先得创建一个database,在MongoDB中没有直观的创建database的命令,可以键入以下命令:

use TestDatabase;

该命令类似mysql里的use 操作,不同的是在MongoDB中这个database可以不一定存在,不存在会自动创建该database,存在的话则直接进入该database。注意在这个新的database中输入一些数据,该database就算是默认自动创建了。

数据库常用命令

1、Help查看命令提示

Help

db.help();

db.yourColl.help();

db.youColl.find().help();

rs.help();

2、切换/创建数据库

use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库

3、查询所有数据库

show dbs;

4、删除当前使用数据库

db.dropDatabase();

5、从指定主机上克隆数据库

db.cloneDatabase(“127.0.0.1”);将指定机器上的数据库的数据克隆到当前数据库

6、从指定的机器上复制指定数据库数据到某个数据库

db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中

7、修复当前数据库

db.repairDatabase();

8、查看当前使用的数据库

db.getName();

db; db和getName方法是一样的效果,都可以查询当前使用的数据库

9、显示当前db状态

db.stats();

10、当前db版本

db.version();

11、查看当前db的链接机器地址

db.getMongo();

权限问题

到了database这一步,在讲接下去的操作之前,我们先来对MongoDB的权限进行一些测试,弄明白。

首先对于一个全新的MongoDB数据库(可以任意的将上面谈到过的data以及log文件夹清空来删除数据),启动它:

mongod -dbpath=D:\mongodb\data -logpath=D:\mongodb\logs\mongodb.log–auth

然后连接进入控制台,此时输入查看所有数据库的命令:

show dbs;

可以看到

admin (empty)

local (empty)

这两个数据库,我们来说说admin这个数据库。键入命令:

use admin;切换数据库

show collections;显示当前数据库中的集合(类似关系数据库中的表)

我们可以看到这个库还是空的,没有数据表。接下来我们在这个库里创建一个用户:db.addUser(‘sa’,’sa’);

我们会看到下面这句话:

addUser succeeded, but cannot wait for replication since we no longer have auth

此时我们再查看数据表:

show collections;

会看到一个error信息,提示我们没有登录认证。

db.auth('sa','sa');

返回1表示登录成功,接下来再次查看数据表,能够看到

system.indexes

https://www.sodocs.net/doc/838782676.html,ers

这两张表,https://www.sodocs.net/doc/838782676.html,er表就等同于MsSql中的用户表,用来存放超级管理员的,键入show users;显示用户

就可以看到我们刚才创建的sa超级管理员用户。接下来我们就来试一下这个超级管理员用户能做些什么吧。

我们先退出控制台,连接到一个新的database:

mongo testdb

这个testdb如之前所说,无论这个库是否存在,如果不存在,往该库中添加数据,会默认创建该库。输入命令:

show collections;

可以看到提示error信息,原因很好理解,我们还没有进行登录认证,我们可以用刚才创建的超级管理员试试:

db.auth('sa','sa');

提示Error,返回信息0,用户不存在。这是怎么回事呢?原因在于:当我们单独访问MongoDB的数据库时,用户名密码并非超级管理员,而是该库的https://www.sodocs.net/doc/838782676.html,er表中的用户,没权限,那我们就应该尝试给该库的https://www.sodocs.net/doc/838782676.html,er表中添加用户。输入命令: db.addUser(‘test,’test’);

依然提示错误,原因是没有认证无权限。新的数据库使用超级管理员也无法访问,创建用户也没有权限,那该怎么办呢?别急,既然我们已经有了超级管理员账户,相信这个超级管理员一定是可以访问所有的库的,键入命令:

use admin;

我们先重新进入admin这个超级管理员所在库,然后再用超级管理员账户登录:db.auth('sa','sa');

提示输出1,登录成功。之后再返回之前我们无可奈何的新库:

use testdb;

再次show collections,现在发现不会有错误提示了。之后我们可以再次对这个库的https://www.sodocs.net/doc/838782676.html,er表中添加用户:

db.addUser(‘test,’test’);

成功创建!这个时候我们再来showcollections,发现跟admin库一样,多出来了https://www.sodocs.net/doc/838782676.html,er以及system.index两张表。现在我们再尝试一下退出控制台,重新进入: mongo testdb

db.auth(‘test’,’test’);

show collections;

现在发现这一路畅通无阻了。

这个时候如果我们要查看其它的数据库,比如键入show dbs这道命令,则会得到权限错误提示。

总结:回顾一下之前的流程,在MongoDB中,每一个database都拥有一张https://www.sodocs.net/doc/838782676.html,er 表,这张表用于存放该库里的账户,而系统自带了一个admin这个超级管理员库,这个库里的user都属于超级管理员,所有新建的其它database都需要经过这些超级管理员给予授权才能正常使用,而其它database里的用户则不能跨库进行操作。

删除用户db.removeUser("userName");

创建Collection

现在我们已经进入了名为TestDatabase的数据库中,可以在这里面创建collection。执行命令:

db.createCollection('user');

返回提示信息OK,则创建名为user的数据表成功。可以通过show collections查看到。

与以往传统的关系型数据库不同,非关系型数据库的表没有固定的数据格式,也就是不存在固定的列,在直观的感受上这一点可以算是与以往的数据库最大的不同。

对数据表的操作

在MongoDB中对数据表进行增删改查的操作方式与java代码中调用方法函数很相似,读起来也很直观,各种条件以参数的形式传入函数中即可。

首先添加一条数据:

命令

https://www.sodocs.net/doc/838782676.html,er.save({name:'zhangsan',age:25,sex:’male’});

这句话类似于insert into user(name, age, sex) values(‘zhangsan’,25,’male’);

执行这句话就可以向user表内插入一条user信息,可以很容易的看出来对save()函数传入的参数就是我们非常熟悉的json格式!这时候我们可以将这条刚添加的数据查询出来,键入命令:

https://www.sodocs.net/doc/838782676.html,er.find();

这句话类似于”select * from user”,我们会得到如下信息:

{ "_id" : ObjectId("50ff99d62c2767f71aed235e"), "name" : "zhangsan", "age" : 25,

"sex" : "male" }

可以看到除了我们自己录入的数据,还有一个”_id”字段,该字段是MongoDB默认用的

是自己的ObjectId作为主键。下面继续来键入命令:

https://www.sodocs.net/doc/838782676.html,er.save({name:’lisi’,age:21,sex:’male’,class:’1-1’});

https://www.sodocs.net/doc/838782676.html,er.save({name:’wangwu’,age:20,sex:’male’,birthday:new Date()});

在这条数据中我们多增加了一个class字段,这个时候我们https://www.sodocs.net/doc/838782676.html,er.find()后得到:{ "_id" : ObjectId("50ff99d62c2767f71aed235e"), "name" : "zhangsan", "age" : 25, "sex" : "male" }

{ "_id" : ObjectId("50ff9ec92c2767f71aed235f"), "name" : "lisi", "age" : 21, "se

x" : "male", "class" : "1-1" }

{ "_id" : ObjectId("50ffa0a52c2767f71aed2360"), "name" : "wangwu", "age" : 20, " sex" : "male", "birthday" : ISODate("2013-01-23T08:34:45.470Z") }可以看到,对于非关系型数据库的一张表来说,并没有列的限制,我们可以任意的插入任何一条形似json的数据。

删除数据命令:

https://www.sodocs.net/doc/838782676.html,er.remove({'age':20});

这句话类似于delete from user where age=20;

很容易理解,删除年龄为20的数据。

查询数据命令:

和传统数据库一样,查询始终是数据库里的一门大学问。MongoDB中查询语句函数:

db..find({查询条件限定},{返回字段});

其中{返回字段}这个字段可选。

#查询一个年龄为27的用户:

https://www.sodocs.net/doc/838782676.html,er.find({"age":23});

这句话类似于select * from user where age=23;

#查询一个年龄为27,姓名为robin的用户,相当于AND

https://www.sodocs.net/doc/838782676.html,er.find({"age":27,"name":"robin"});

这句话类似于select * from user where age=27 AND name=’robin’;

#查询年龄大于20且小于30的用户

https://www.sodocs.net/doc/838782676.html,er.find({"age":{"$gt":20,"$lt":30}});

这句话类似于select * from user where age>20 AND age<30;

这里条件查询有常用的:小于("$lt")、小于等于("$lte")、大于("$gt")、大于等于("$gte")、不等于("$ne")。

mysql中的”in”和”not in”分别对应”$in”、”$nin”。”$in”和”$nin”能够对应的数据类型非常灵活,不同类型的条件可以同时查询,如下:

#查询年龄在某个范围的用户:

https://www.sodocs.net/doc/838782676.html,er.find({"age":{"$in":[20,22,25]}});

这句话类似于select * from user where age in (20,22,25);

https://www.sodocs.net/doc/838782676.html,er.find({"age":{"$in":[20,22,25,"az"]}});

https://www.sodocs.net/doc/838782676.html,er.find({"age":{"$nin":[20,22,25,"az"]}});

这句话类似于select * from user where age not in (20,22,25,"az");

注意:这句话在mysql中式错的,不支持,但是在MongoDB是正确的.

OR的用法:

#年龄在某个范围内或者name在某个范围内的用户

https://www.sodocs.net/doc/838782676.html,er.find({"$or":[{"age":23},{"name":"robin"}]});

这句话类似于select * from user where age=23 or name=’robin’;

https://www.sodocs.net/doc/838782676.html,er.find({"$or":[{"age":{"$in":[23,4,"az"]}},{"name":"robin"}]});

作为查询的第二个参数,如果没有的话是默认返回所有字段。可以对需要的返回字段指定:

https://www.sodocs.net/doc/838782676.html,er.find({},{"name":1,"age":1});

这句话类似于select name,age from user;

这个查询将返回name、age、_id字段,_id字段作为主键为默认返回,若不想获取的话可以这样写:

https://www.sodocs.net/doc/838782676.html,er.find({},{"name":1,"age":1,"_id":0});

这句话类似于select age from user;

很容易理解0代表false,1代表true,当然完全可以这样写:

https://www.sodocs.net/doc/838782676.html,er.find({},{"name":true,"age":1,"_id":false});

这句话类似于select name,age from user;

#查询去掉后的当前聚集集合中的某列的重复数据(distict)

https://www.sodocs.net/doc/838782676.html,er.distinct("name");会过滤掉name中的相同数据

相当于:select distict name from user;

模糊查询的用法:

#查询name中包含mongo的数据

https://www.sodocs.net/doc/838782676.html,er.find({name: /mongo/});//相当于%%

相当于:select * from userInfo where name like ‘%mongo%’;

#查询name中以mongo开头的

https://www.sodocs.net/doc/838782676.html,er.find({name: /^mongo/});

相当于:select * from user where name like ‘mongo%’;

排序:

#按照年龄排序

升序:https://www.sodocs.net/doc/838782676.html,er.find().sort({age: 1});

相当于:select * from user order by age asc;

降序:https://www.sodocs.net/doc/838782676.html,er.find().sort({age: -1});

相当于:select * from user order by age desc;

Limit的用法:

#查询前5条数据

https://www.sodocs.net/doc/838782676.html,er.find().limit(5);

相当于:select * from user limit 5;

Skip的用法:

#查询10条以后的数据

https://www.sodocs.net/doc/838782676.html,er.find().skip(10);

相当于:select * from prowage b where b.id > (select max(id) from (select * from prowage limit 10) a)或者#select * from prowage where id >= (select id from prowage limit 10,1);(暂时) 分页:

#查询在10-20之间的数据

https://www.sodocs.net/doc/838782676.html,er.find().limit(20).skip(10);可用于分页,limit是pageSize,skip是第几页*pageSize 相当于:select * from user limit 10,20;

#查询某个结果集的记录条数

https://www.sodocs.net/doc/838782676.html,erInfo.find({age: {$gte: 25}}).count();

相当于:select count(*) from userInfo where age >= 25;

更新数据命令:

db.collection.update( criteria, objNew, upsert, multi )

参数说明:criteria : update的查询条件,类似sql update查询内where后面的;

objNew: update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为

sql update查询内set后面的;

upsert: 这个参数的意思是,如果不存在update的记录,是否插入objNew,true

为插入,默认是false,不插入;

multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,

就把按条件查出来多条记录全部更新。

https://www.sodocs.net/doc/838782676.html,er.update({age: 25}, {$set: {name: 'changeName'}}, false, true);

相当于:update user set name =’changeName’ where age=25;

https://www.sodocs.net/doc/838782676.html,er.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);

用法:{ $inc : { field : value } }意思对一个数字字段field增加value

相当于:update user set age = age + 50 where name = ‘lisi’;

https://www.sodocs.net/doc/838782676.html,er.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true);

相当于:update users set age = age + 50, name =‘hoho‘where name = ‘lisi‘;

更多:

https://www.sodocs.net/doc/838782676.html,er.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一条记录db. user.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 全更新了

db. user.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 只加进去了第一条

db. user.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 全加进去了db. user.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );全更新了

db. user.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );只更新了第一条

操作总结:肿么没有出现2个表一起进行操作呢?

那么因为: mongodb是非关系的,所以mongodb不支持多表联接查询,它的每一条记录以类式于Map的形式存储(),所以它只能从一个表里面查询出结果,再到另一个表里把该结果作为一个条件再进行下一步查询。你要针对多个集合进行数据检索的时候,必须使用多个查询。

查看聚集集合基本信息

1、查看帮助 https://www.sodocs.net/doc/838782676.html,er.help();

2、查询当前集合的数据条数https://www.sodocs.net/doc/838782676.html,er.count();

3、查看数据空间大小 https://www.sodocs.net/doc/838782676.html,er.dataSize();

4、得到当前聚集集合所在的db https://www.sodocs.net/doc/838782676.html,erInfo.getDB();

5、得到当前聚集的状态https://www.sodocs.net/doc/838782676.html,er.stats();

6、得到聚集集合总大小https://www.sodocs.net/doc/838782676.html,er.totalSize();

7、聚集集合储存空间大小https://www.sodocs.net/doc/838782676.html,er.storageSize();

8、Shard版本信息https://www.sodocs.net/doc/838782676.html,er.getShardVersion()

9、聚集集合重命名https://www.sodocs.net/doc/838782676.html,er.renameCollection("users");将user重命名为users

10、删除当前聚集集合 https://www.sodocs.net/doc/838782676.html,er.drop();

语句块操作

1、简单Hello World

print("Hello World!");

这种写法调用了print函数,和直接写入"Hello World!"的效果是一样的;

2、将一个对象转换成json

tojson(new Object());

tojson(new Object('a'));

3、循环添加数据

>for (var i = 0; i < 30; i++) {

... https://www.sodocs.net/doc/838782676.html,er.save({name: "u_" + i, age: 22 + i, sex: i % 2});

... };

这样就循环添加了30条数据,同样也可以省略括号的写法

>for (var i = 0; i < 30; i++) https://www.sodocs.net/doc/838782676.html,er.save({name: "u_" + i, age: 22 + i, sex:

i % 2});

4、find 游标查询

>var cursor = https://www.sodocs.net/doc/838782676.html,er.find();

> while (cursor.hasNext()) {

printjson(cursor.next());

}

这样就查询所有的user信息,同样可以这样写

var cursor = https://www.sodocs.net/doc/838782676.html,er.find();

while (cursor.hasNext()) { printjson(cursor.next); }

同样可以省略{}号

5、forEach迭代循环

https://www.sodocs.net/doc/838782676.html,er.find().forEach(printjson);

forEach中必须传递一个函数来处理每条迭代的数据信息

6、将find游标当数组处理

var cursor = https://www.sodocs.net/doc/838782676.html,er.find();

cursor[4];

取得下标索引为4的那条数据

既然可以当做数组处理,那么就可以获得它的长度:cursor.length();或者

cursor.count();

那样我们也可以用循环显示数据

for (var i = 0, len = c.length(); i < len; i++) printjson(c[i]);

7、将find游标转换成数组

>var arr = https://www.sodocs.net/doc/838782676.html,er.find().toArray();

>printjson(arr[2]);

用toArray方法将其转换为数组

8、定制我们自己的查询结果

只显示age <= 28的并且只显示age这列数据

d https://www.sodocs.net/doc/838782676.html,er.find({age: {$lte: 28}}, {age: 1}).forEach(printjson);

https://www.sodocs.net/doc/838782676.html,er.find({age: {$lte: 28}}, {age: true}).forEach(printjson);

排除age的列

https://www.sodocs.net/doc/838782676.html,er.find({age: {$lte: 28}}, {age: false}).forEach(printjson);

9、forEach传递函数显示信息

db.things.find({x:4}).forEach(function(x) {print(tojson(x));});

数据类型

基本的数据类型

MongoDB的文档类似于JSON.在概念上与javascript中的对象相似.

MongoDB在保留JSON基本的键值对特性的基础上,添加了其他一些数据类型.

1.null

表示空值或者不存在的字段

{"x":null}

2.布尔值

true或false

{"x":false}

3.32位整数

shell中这个类型不适用,因为javascript只支持64位浮点数,所以32位整数会被自动转换

4.64位整数

shell中这个类型不适用,shell会使用一个特殊的内嵌文档来显示64位整数

5.64位浮点数

shell中的数字都是这种类型,下面都是浮点数

{"x":3.14}

{"x":3}

6.字符串

utf-8字符串都可表示为字符串类型的数据

{"x":"Refactor"}

7.符号

shell中这个类型不适用.shell将数据库里的符号类型转换成字符串

8.对象id

对象id是文档的12字节的唯一ID

{"x":ObjectId()}

9.日期

日期类型存储的是从标准纪元开始的毫秒数.不存储时区

{"x":new Date()}

10.正则表达式

文档中可以包含正则表达式,采用javascript语法

{"x":/refactor/i}

11.代码

文档中可以包含javascript代码

{"x":function(){....}}

12.二进制数据

二进制数据由任意字节的串组成,shell中不能用

13.最大值

BSON包含的特殊类型,表示可能的最大值,shell中不能用

14.最小值

BSON包含的特殊类型,表示可能的最小值,shell中不能用

15.未定义

文档中可以使用未定义类型

{"x":undefined}

16.数组

值的集合或列表可以表示成数组

{"x":["a","b","c"]}

17.内嵌文档

文档中可以包含别的文档,也可以作为值嵌入到父文档中

{"x":{"hello":"world"}}

MongoDB变量类型敏感存储的类型必须和查询的类型一致。例如int类型的123,不可用字符串形式的"123",所以接收参数时要注意类型的转换。

mongodb学习总结

MongoDB学习文档 一、NoSQL简介 1、什么是NoSQL? NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。 NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。 2、NoSQL的优点/缺点 优点: 高可扩展性。 分布式计算。 低成本。 架构的灵活性,半结构化数据。 没有复杂的关系。

缺点: 没有标准化。 有限的查询功能(到目前为止)。 最终一致是不直观的程序。 3、NoSQL 数据库分类 类型部分代表特点 列存储Hbase Cassandra Hypertable 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 文档存储MongoDB CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 key-value存储Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) 图存储Neo4J FlockDB 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 对象存储db4o 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。

物联网岗位细分

物联网岗位细分 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

物联网开发工程师职业方向细分 新基建背景下,物联网领域对于人才的需求越发强烈,为此,物联网培训品牌机构-----开物学院综合智联招聘、51job等招聘网站对于相关职位信息进行了汇总。由于物联网技术涉及面太广,我们对于“物联网开发工程师”的岗位技能进行分析,可以看出其方向细分、能力综合的根本特性。无论对于物联网专业的学习者还是跨行从业者,都需要在了解物联网系统架构的基础上,深入培养某个方向的技能,才能在物联网产业发展的过程中找到自己的职业定位。 一、数据架构方向(物联网大数据架构师) 岗位职责: o负责物联网大数据平台系统的设计与实现,包括实时流和离线数据等相关功能的开发与实现。 o根据开发规范与流程独立完成模块的设计、编码、测试以及相关文档。o负责物联网监测行业的算法工程化实现。 任职要求: o有相关的大数据系统架构经验,具有扎实的计算机科学功底,扎实的编程基础和数据结构算法基础,良好的工程素养,极强的问题解决能力 o熟练掌握Hadoop、Kafka、Spark、Storm等分布式框架原理,有相关的调优、运维、开发经验 o具有Postgresql、MySql、MongoDB,ClickHouse等其中一种数据库应用开发经验 o有物联网相关系统、可视化相关系统、微服务相关系统的设计和研发经验。 二、通信方向(物联网通信工程师) 岗位职责: 负责物联网终端、网关及相关通信技术开发。 任职要求:

精通无线通信相关协议及技术,如LoRaWAN、NB-IOT、Wi-Fi、BLE、LTE、Zigbee等 熟悉硬件开发流程,熟悉RF电路,对各种射频技术及参数有较好的理解 熟悉MQTT、CoAP、HTTP REST、WebSocket等相关物联网连接协议 三、软件开发方向(物联网平台软件开发工程师) 岗位职责: 按照软件工程相关工作模式保质保量完成软件产品功能设计和相关文档编写。 独立设计开发物联网应用平台功能模块,完成软件产品集成及测试。 协助支撑完成终端软硬件测试平台搭建和提供终端软件技术咨询服务。 任职要求: 熟悉Java,Python或C/C++等语言,熟悉高并发、高性能的分布式系统的设计优先。 精通物联网技术原理,熟悉物联网相关技术趋势, 熟悉物联网相关协议(MQTT、CoAP、LwIP、LwM2M)及相关开源项目优先。 熟悉Spring MVC、Hibernate、Mybatis开源开发框架。 熟练使用Redis、RabbitMQ、MongoDB等相关或类似技术。 熟练使用Linux(CentOS/Ubuntu)操作和管理。 四、嵌入式开发方向(物联网嵌入式高级开发工程师) 岗位职责: o负责与芯片/模组商/硬件厂商等合作伙伴共同实现IoT产品的开发。 o负责IoT协议制定和各个端包括Linux/Android/各类RTOS等的移植实现。 o负责IoT某些核心模块能力,如网络协议栈等实现。 o负责各类IoT应用场景下终端产品的选型和开发。 任职要求: o精通C/C++语言编程,熟悉嵌入式开发,具有良好的编程风格和文档编制习惯。 o精通嵌入式操作系统,熟练掌握任务调度/内存回收等实现原理,有freertos、UCOS、RT-Thread、linux等系统开发经验者优先。 o熟悉主流ARM处理器体系架构,有STM32、NXP等芯片开发经验优先。 o熟悉各类物联网通讯协议,如:LoRa、NB-IoT、eMTC、WiFi/BLE等,熟悉TCP/IP网络架构,有相关物联网开发经验优先。 o五、移动端开发方向(物联网移动端开发工程师)岗位职责: 负责iOS/Android下AIOT移动端APP SDK开发; 负责对接客户APP开发的接口需求。 任职要求: 熟悉常见数据结构、算法和设计模式,熟悉TCP/IP协议。

mongodb操作

撰写报告 实验名称:课程名称:实验学期: 班级名称:学生姓名:学生学号: 上课地点:实验时间:截止时间: 实验目的:实验指导书: 实验内容: 一、数据库操作 1.显示当前选择的数据库 > db test 2.创建或切换数据库MyDB > use MyDB switched to db MyDB > db MyDB 3.查看所有数据库 > show dbs local 0.078GB 4.向MyDB插入一个文件 > db.movie.insert({"name":"tutorials yiibai"}) WriteResult({ "nInserted" : 1 }) 5.查看所有数据库 > show dbs MyDB 0.078GB local 0.078GB 6.删除数据库MyDB > db.dropDatabase() { "dropped" : "MyDB", "ok" : 1 } > show dbs local 0.078GB 二、集合操作 1.显式和隐式创建集合movie 显示集合创建 > db.createCollection("movie") { "ok" : 1 } > show collections movie system.indexes

隐身集合创建 > db.movie.insert({"name":"tutorials yiibai"}) WriteResult({ "nInserted" : 1 }) > show collections movie system.indexes 2.查询所有集合 > show collections movie system.indexes 3.查看集合总数据量 > db.movie.count() 1 4.查看movie集合所在数据库 > db.movie.getDB() MyDB 5.查看当前集合movie状态 > db.movie.stats() { "ns" : "MyDB.movie", "count" : 1, "size" : 112, "avgObjSize" : 112, "numExtents" : 1, "storageSize" : 8192, "lastExtentSize" : 8192, "paddingFactor" : 1, "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.", "userFlags" : 1, "capped" : false, "nindexes" : 1, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1 } 6.集合movie重命名 > db.movie.renameCollection("movies") { "ok" : 1 } > show collections movies system.indexes

MongoDB 使用手册-中文版

MongoDB 使用手册-中文版

目录 第1章MONGODB简介 (4) 1.1功能特点 (4) 1.2适用范围 (4) 第2章MONGODB下载及安装 (5) 2.1下载地址 (5) 2.2安装方法 (5) 第3章MONGODB语法 (6) 3.1基本命令 (6) 3.1.1.启动mongodb (6) 3.1.2.停止mongodb (6) 3.2SQL语法 (7) 3.2.1.基本操作 (7) 3.2.2.数据集操作 (8) 第4章JAVA操作MONGODB (10) 4.1正在整理中 (10) 第5章其它 (10) 5.1正在整理中 (10)

第1章MongoDB简介 1.1功能特点 官方网址:https://www.sodocs.net/doc/838782676.html,/ MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案。 它的特点是可扩展,高性能,易使用,模式自由,存储数据非常方便等,主要功能特性有: ◆面向文档存储:(类JSON数据模式简单而强大)。 ◆高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。 ◆复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从 模式及服务器之间的相互复制。 ◆Auto-Sharding自动分片支持云级扩展性(处于早期alpha阶段):自动分片功 能支持水平的数据库集群,可动态添加额外的机器。 ◆动态查询:它支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻 易查询文档中内嵌的对象及数组。 ◆全索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达 式,并生成一个高效的查询计划。 ◆支持RUBY,PYTHON,JA V A,C++,PHP等多种语言。 1.2适用范围 适用场景: ◆适合实时的插入,更新与查询,并具备应用程序实时数据存储所需的复制及高 度伸缩性。 ◆适合作为信息基础设施的持久化缓存层。 ◆适合由数十或数百台服务器组成的数据库。因为Mongo已经包含对 MapReduce引擎的内置支持。 ◆Mongo的BSON数据格式非常适合文档化格式的存储及查询。 不适用场景: ◆高度事务性的系统。 ◆传统的商业智能应用。 ◆级为复杂的SQL查询。

mysql优化笔记

◆Mysql数据库的优化技术<大型网站优化技术> 对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] c: 分表技术(水平分割、垂直分割) d: 读写[写: update/delete/add]分离 e: 存储过程[模块化编程,可以提高速度] 数据库的三层结构: f: 对mysql配置优化[配置最大并发数my.ini, 调整缓存大小] g: mysql服务器硬件升级 h: 定时的去清除不需要的数据,定时进行碎片整理(MyISAM) CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name,...) ◆什么样的表才是符合3NF (范式) 表的范式,是首先符合1NF, 才能满足2NF , 进一步满足3NF 1NF: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只有数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF ?数据库的分类 关系型数据库: mysql/oracle/db2/informix/sysbase/sql server 非关系型数据库: (特点: 面向对象或者集合) NoSql数据库: MongoDB(特点是面向文档) 2NF: 表中的记录是唯一的, 就满足2NF, 通常我们设计一个主键来实现id primary key ; 3NF: 即表中不要有冗余数据, 就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放. 比如下面的设计就是不满足3NF:显示推导处理

Windows下安装MongoDB服务器-王昌军

Windows下安装MongoDB服务器 MongoDB的官方下载站是https://www.sodocs.net/doc/838782676.html,/downloads,可以去上面下载最新的程序下来。在下载页面可以看到,对操作系统支持很全面,OS X、Linux、Windows、Solaris 都支持,而且都有各自的32位和64位版本。目前的稳定版本是2.0.2版本。 1.安装包及安装目录准备 (1). 下载MongoDB url地址: https://www.sodocs.net/doc/838782676.html,/downloads (2). 设置MongoDB目录:在D盘建立D:\Software\MongoDB-2.0.2\bin目录。解压下载的MongoDB安装包,解压并将解压后的文件中的bin目录下的所有文件拷贝到刚才建立的目录下。 (3). 设置数据文件路径:在D:\Software\MongoDB-2.0.2目录下建立data文件夹,用以存放MongoDB数据文件。 (4). 设置日志文件:在D:\Software\MongoDB-2.0.2目录下建立logs文件夹,并在logs下面建立mongodb.log文件。 2.安装MongoDB服务器 打开cmd窗口(如果是win7的话。那启动cmd要用管理员身份来启动(右键以管理员运行)):输入下面命令: C:\Windows\system32>D: D:\>cd D:\Software\MongoDB-2.0.2\bin D:\Software\MongoDB-2.0.2\bin>mongod --dbpath D:\Software\MongoDB-2.0.2\data --logpath=D:\Software\MongoDB-2.0.2\logs\mongodb.log --install

mongodb 对内存的严重占用以及解决方法

mongodb 对内存的严重占用以及解决方法 刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%。汗呀。 本文就来剖析一下mongodb对内存的具体使用方法,以及生产环境针对mongodb占大量内存的问题的解决。 先看一个MongoDB服务器的top命令结果 shell> top -p $(pidof mongod) Mem: 32872124k total, 30065320k used, 2806804k free, 245020k buffers Swap: 2097144k total, 100k used, 2097044k free, 26482048k cached VIRT RES SHR %MEM 1892g 21g 21g 69.6 或者先top后,然后shift+m 把当前进场按占用内存的多少排序。看看你的mongodb 能占用多少内存。 先了解一下linux对内存的管理方式: 在Linux里(别的系统也差不多),内存有物理内存和虚拟内存之说,物理内存是什么自然无需解释,虚拟内存实际是物理内存的抽象,多数情况下,出于方便性的考虑,程序访问的都是虚拟内存地址,然后操作系统会把它翻译成物理内存地址。 很多人会把虚拟内存和Swap混为一谈,实际上Swap只是虚拟内存引申出的一种技术而已:操作系统一旦物理内存不足,为了腾出内存空间存放新内容,就会把当前物理内存中的内容放到交换分区里,稍后用到的时候再取回来,需要注意的是,Swap的使用可能会带来性能问题,偶尔为之无需紧张,糟糕的是物理内存和交换分区频繁的发生数据交换,这被称之为Swap颠簸,一旦发生这种情况,先要明确是什么原因造成的,如果是内存不足就好办了,加内存就可以解决,不过有的时候即使内存充足也可能会出现这种问题,比如MySQL 就有可能出现这样的情况,解决方法是限制使用Swap: shell> sysctl -w vm.swappiness=0 查看内存情况最常用的是free命令: shell> free -m total used free shared buffers cached Mem: 32101 29377 2723 0 239 25880 -/+ buffers/cache: 3258 28842 Swap: 2047 0 2047

Mongodb集群搭建的三种方式

Mongodb集群搭建的三种方式 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 Mongodb的存储方式是文档式存储,并不是Key-Value形式。 Mongodb的三种集群方式的搭建:Replica Set、Sharding、Master-Slaver。 1、Replica Set(副本集) 简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致。如下图: Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。 默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设

置叫做Read Preference Modes,同时Java客户端提供了简单的配置方式,可以不必直接对数据库进行操作。 仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。 2、Sharding 和Replica Set类似,都需要一个仲裁节点,但是Sharding还需要配置节点和路由节点。就三种集群搭建方式来说,这种是最复杂的。部署图如下:

168 道2019年最新的Python面试题,让你最短时间内掌握核心点

1.列出5 个常用Python 标准库? 2.Python 内建数据类型有哪些? 3.简述with 方法打开处理文件帮我我们做了什么? 4.列出Python 中可变数据类型和不可变数据类型,为什么? 5.Python 获取当前日期? 6.统计字符串每个单词出现的次数 7.用python 删除文件和用linux 命令删除文件方法 8.写一段自定义异常代码 9.举例说明异常模块中try except else finally 的相关意义 10.遇到bug 如何处理 语言特性 1.谈谈对Python 和其他语言的区别 2.简述解释型和编译型编程语言 3.Python 的解释器种类以及相关特点? 4.说说你知道的Python3 和Python2 之间的区别? 5.Python3 和Python2 中int 和long 区别? 6.xrange 和range 的区别? 编码规范 7.什么是PEP8? 8.了解Python 之禅么?

9.了解docstring 么? 10.了解类型注解么? 11.例举你知道Python 对象的命名规范,例如方法或者类等 12.Python 中的注释有几种? 13.如何优雅的给一个函数加注释? 14.如何给变量加注释? 15.Python 代码缩进中是否支持Tab 键和空格混用。 16.是否可以在一句import 中导入多个库? 17.在给Py 文件命名的时候需要注意什么? 18.例举几个规范Python 代码风格的工具 数据类型 字符串 19.列举Python 中的基本数据类型? 20.如何区别可变数据类型和不可变数据类型 21.将"hello world"转换为首字母大写"Hello World" 22.如何检测字符串中只含有数字? 23.将字符串"ilovechina"进行反转 24.Python 中的字符串格式化方式你知道哪些? 25.有一个字符串开头和末尾都有空格,比如“adabdw ”,要求写一个函数把这个字符串的前后空格都去掉。

MongoDB应用

MongoDB数据库 一、MongoDB简介 MongoDB是一个面向文档的数据库系统。使用C++编写,不支持SQL,但有自己功能强大的查询语法。 MongoDB使用BSON作为数据存储和传输的格式。BSON是一种类似JSON的二进制序列化文档,支持嵌套对象和数组。 MongoDB很像MySQL,document对应MySQL的row,collection对应MySQL的table。 二、Wind ows下MongoDB操作 MongoDB在Windows上的安装运行很方便。直接下载、解压,然后运行bin/mongod 即可启动服务器,运行bin/mongo 即可运行命令行客户端。 2-1、下载与解压 官方网站:https://www.sodocs.net/doc/838782676.html,/downloads。 下载对于版本,解压并抽取相关的bin目录到C:\MongoDB下(这个任意选择)。 在启动MongoDB之前,我们必须新建一个存放mongoDB数据和日志的目录。数据库目录:C:\MongoDB\data\db\,日志目录:C:\MongoDB\data\。 2-2、运行服务端 打开CMD窗口,进入到C:\MongoDB\bin目录下,运行服务端mongod.exe。 C:\>cd C:\MongoDB\bin C:\MongoDB\bin>mongod.exe --dbpath=C:\MongoDB\data\db --directoryperdb --logpath

=C:\MongoDB\data\logs --logappend 注: 日志文件为C:\MongoDB\data\logs,以及添加方式记录(追加)。 数据目录为C:\MongoDB\data\db,并且每个数据库将储存在一个单独的目录(--directoryperdb)。 服务端要一直运行。Ctrl+C可中断。 2-3、运行客户端 再打开一个CMD窗口,进入到C:\MongoDB\bin目录下,运行客户端mongo.exe来登录MongoDB。(要保持服务端mongod.exe的窗口不关闭) 2-4、测试操作 MongoDB使用GridFS来储存大文件。每个BSON对象大小不能超过4MB。 字段名限制:不能以“$”开头;不能包含“.”;“_id”是系统保留的字段,但用户可以自己储存唯一性的数据在字段中。 MongoDB为每个数据库分配一系列文件。每个数据文件都会被预分配一个大小,第一个文件名字为“.0”,大小为64MB,第二个文件“.1”为128MB,依此类推,文件大小上限为2GB。 MongoDB没有新建数据库或者collection的命令,只要进行insert或其它操作,MongoDB 就会自动帮你建立数据库和collection。当查询一个不存在的collection时也不会出错,Mongo会认为那是一个空的collection。 一个对象被插入到数据库中时,如果它没有ID,会自动生成一个“_id”字段,为24位16进制数。 MongoDB命令行客户端的脚本语法有些类似MySQL的: > show dbs // 列出所有数据库 > use memo // 使用数据库memo。即使这个数据库不存在也可以执行,但该数据库不会立刻被新建,要等到执行了insert等的操作时,才会建立这个数据库。

MongoVUE简单操作手册

MongoVUE 是个比较好用的MongoDB客户端,需要注册,但是可以变成永久使用,一、基础操作 新增一个连接 进入的界面形如

二、进阶操作 1、查看所有数据,会有三种格式的观看方式,分别为树形,表格,bjosn,详情见1.1 2、查看特定的数据,使用的时候shell命令,需要一些基础的语法知识,详情见2.1 3、更新数据,详情见3.1 4、删除数据,慎用,如果没有备份,删除之后无法恢复

5、插入数据,详情见5.1 6、复制文档到统一集合,详情见6.1 7、复制集合到不同的数据库,详情见7.1 8、删除文档内所有数据、慎用,如果没有备份,删除之后无法恢复 9、删除数据库慎用,如果没有备份,删除之后无法恢复 1.1 查看所有数据 点击”view之后”,会出现文档内的数据 树形: 表格: 需要修改什么值的时候,可以直接点击要修改的字段进行修改,修改完成之后按回车

Txt形,Bjson格式的 2.1查看特定的数据 1.点击”find”,输入条件之后点击find便可以进行查询,这里简单的讲一下基本的 查询语句 有点模糊,可以放大点 1、区域为基本查询 一组键值,key为要查询的字段,value为要查询字段的值,如有多个用逗号隔 开 语法{“要查询的字段”:“要查询字段的值”,“第二个”…..} 比如,我们想查一个名为huihh的人信息,并且年龄为30,那么写成

{“name”:”huihh”,”age”:30} 2、字段查询 和1有点不同,这么如果写查询语句 {"name":"huihh"}那么查询出来的数据,出了id,是一整列的name,并不会进行 筛选,所以,这里我们可以写成{“name”,“”},查询之后只显示name这一列, 如果需要其他的特别查询条件,与1合用 3、排序 方法使用一组键值对做参数,key是document里的key的名字,value是1升序或者-1降序。 比如,查询huihh会有3个人呢,那么就使用age进行排序, {“age”:-1} 4、结果集的筛选

mongodb安装及简单操作附截图

MongoDB安装及简单操作 1.下载mongodb 链接:https://www.sodocs.net/doc/838782676.html,/s/1gdKtrUz 密码:9af8这是我网盘的链接,下载解压到D 盘 2.配置文件 第一步,解压之后将文件夹放在D盘; 第二步,将mongodb-win32-x86_64-2.0.6文件夹重命名为mongodb; 第三步,在D:\mongodb\下创建data文件夹,路径D:\mongodb\下包含下面文件; 第四步,在data文件夹下创建db文件夹和log文件夹如下图; 第五步,在log文件夹下创建日志文件MongoDB.log如下图

3.连接数据库 打开命令提示符(管理员权限) D: cd d:\mongodb\bin mongod -dbpath "d:\mongodb\data\db" 正常情况下会看到下面的界面 这时候,已经成功打开mongodb的服务了,27017是默认端口。在浏览器中检验一下是否真的成功的启动了mongodb的服务,在浏览器输入http://localhost:27017/

只要看到上面的界面就证明连接成功了。 这时候,再打开一个命令提示符窗口,可以不是管理员权限,去进行数据库的操作。 输入mongo 输入show dbs 插入一条数据https://www.sodocs.net/doc/838782676.html,er.insert({name:”laowang”}) 也可以是https://www.sodocs.net/doc/838782676.html,er.save({name:”laowang”}) 或者,一次添加姓名和年龄数据,二维数据https://www.sodocs.net/doc/838782676.html,er.save({name:”laowang”,age:”25”}) 查看数据 https://www.sodocs.net/doc/838782676.html,er.find() 相当于sql的select * from user 其他的mongodb常用操作命令,我在网上找了一些,直接给你粘贴上来。 1、Help查看命令提示 help db.help(); db.yourColl.help();

MongoDB入门经典

第一讲MongDB数据库的基本安装文件 https://www.sodocs.net/doc/838782676.html,/display/DOCS/Home MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo 使用C++开发。Mongo的官方网站地址是:https://www.sodocs.net/doc/838782676.html,/ 首先下载数据库的基本软件安装包,下载地址:https://www.sodocs.net/doc/838782676.html,/download 第二,新建目录“D:\MongoDB”,解压下载到的安装包,找到bin目录下面全部.exe文件,拷贝到刚创建的目录下。 第三,在“D:\MongoDB”目录下新建“data”文件夹,它将会作为数据存放的根文件夹。 配置Mongo服务端: https://www.sodocs.net/doc/838782676.html,/scotthernandez/mongo-seattle-java-development 打开CMD窗口,按照如下方式输入命令: > d: > cd D:\MongoDB > mongod --dbpath D:\MongoDB\data

就基本成功了 然后在浏览器中输入http://localhost:27017/ 显示以下网页You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number 然后就OK啦 第二讲关于在java平台下的mongodb的使用的操作 首先下载mongodb在java中的驱动库文件,下载地址分别为 https://https://www.sodocs.net/doc/838782676.html,/KentBeck/junit/downloads https://https://www.sodocs.net/doc/838782676.html,/mongodb/mongo-java-driver/downloads 第二部新建java工程添加库文件如图所示

Mongodb3.0基本教程

非关系数据库—Mongodb 姓名:聂杰 学号:2123212 日期:2015-6-15

数据库新技术大作业 1. 内容简介 1. 版本 DB:Mongodb version:3.0.4 CS:Linux version:3.13.0 2. 应用背景 2010年,随着互联网Web2.0网站的兴起,NoSQL(非关系型数据库)在国内掀起一阵热潮。NoSQL 数据库与传统的关系型数据库相比它具有操作简单、完全免费、源码公开、随时下载等特点,并可 以用于各种商业目的。这使NoSQL产品广泛应用于各种大型门户网站和专业网站,大大降低了运营 成本。而Mongo DB则是其中最流行的一个。 3. 特点 1. 操作简单 2. 完全免费 3. 源码公开 4. 模式自由 5. 开箱即用 6. 水平扩展机制 2. 结构组成 1. 系统架构 2. 数据存储

3. 数据处理 3. 安装过程 1. 系统硬件 一台装有linux的计算机 2. 描述 1. 进入官网(https://www.sodocs.net/doc/838782676.html,/downloads )下载对应系统的Mongodb版本tgz文 件到/home/username/Download,解压并重命名为mongodb 2. mkdir /home/username/mongodb 3. mv /home/username/Download/mongodb /home/username/mongodb 4. cd /home/username/mongodb 5. mkdir data/db

6. touch logs/mongodb.log 7. touch mongodb.conf 8. vim mongodb.conf 9. ./bin/mongod --config mongodb.conf 10. ./bin/mongo 11. 在浏览器打开:http://localhost:28017

MongoDB使用手册

MongoDB使用说明手册

目录 第1章MONGODB简介 (4) 1.1功能特点 (4) 1.2适用范围 (4) 第2章MONGODB下载及安装 (5) 2.1下载地址 (5) 2.2安装方法 (5) 第3章MONGODB语法 (6) 3.1基本命令 (6) 3.1.1.启动mongodb (6) 3.1.2.停止mongodb (6) 3.2SQL语法 (7) 3.2.1.基本操作 (7) 3.2.2.数据集操作 (8) 第4章JAVA操作MONGODB (10) 4.1正在整理中 (10) 第5章其它 (10) 5.1正在整理中 (10)

第1章MongoDB简介 1.1功能特点 官方网址:https://www.sodocs.net/doc/838782676.html,/ MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案。 它的特点是可扩展,高性能,易使用,模式自由,存储数据非常方便等,主要功能特性有: ◆面向文档存储:(类JSON数据模式简单而强大)。 ◆高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。 ◆复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从 模式及服务器之间的相互复制。 ◆Auto-Sharding自动分片支持云级扩展性(处于早期alpha阶段):自动分片功 能支持水平的数据库集群,可动态添加额外的机器。 ◆动态查询:它支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻 易查询文档中内嵌的对象及数组。 ◆全索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达 式,并生成一个高效的查询计划。 ◆支持RUBY,PYTHON,JA V A,C++,PHP等多种语言。 1.2适用范围 适用场景: ◆适合实时的插入,更新与查询,并具备应用程序实时数据存储所需的复制及高 度伸缩性。 ◆适合作为信息基础设施的持久化缓存层。 ◆适合由数十或数百台服务器组成的数据库。因为Mongo已经包含对 MapReduce引擎的内置支持。 ◆Mongo的BSON数据格式非常适合文档化格式的存储及查询。 不适用场景: ◆高度事务性的系统。 ◆传统的商业智能应用。 ◆级为复杂的SQL查询。

Spring-data-mongodb使用手册

Spring-data-mongodb使用手册

文档信息(Document Info) 标题(Title) Spring-data-mongodb使用手册 文档编号(No) 2012-09-19 作者(Author) 张瑜 最后发布时间(Last Update) 2012-09-20 概述(Summarize) 安装mongodb以及掌握spring-data-mongodb的使用方法,一些最佳实践

修订信息(Revise Info) 修订日期(Date)修订人(Reviser) 修订内容(Revises)

附件信息(Attachment Info)

目录 文档信息(Document Info) (2) 修订信息(Revise Info) (3) 附件信息(Attachment Info) (4) 1.概述 (5) 1.1.目的 (5) 1.2.范围 (6) 2.准备 (6) 2.1.环境配置 (6) 2.2.Windows7安装mongodb (6) 2.2.1.配置环境变量 (6) 2.2.2.启动配置mongodb (7) 3.Spring-data-mongodb (8) 3.1.背景 (8) 3.1.1.高级API (9) 3.1.2.低级API (9) 3.2.MongoDbFactory (9) 3.3.MongoTemplate (9) 3.4.Operations (10) 3.4.1.常用Api的方法: (10) 3.5.项目中如何配置实用mongodb (11) 3.6.Callback .................................................................................. 错误!未定义书签。 3.7.Topic和Messaging/PubSub (14) 3.8.Cache (14) 4.NoSQL数据库设计 (14) 4.1.案例1 (14) 5.最佳实践 (14) 5.1.项目案例1(Tinybee项目) (14) 1.概述 1.1. 目的 让团队成员比较快的上手mongodb的相关功能,思考如何结合自己的项目使用。

利用graylog收集各类安全设备日志实现大屏展示

在一个集中视图中展示公司所有安全设备的日志汇总和关联安全事件,是建立安全运营中心的一个前提,作为统一的日志中心,集中管理来自多个数据源的日志。来进行高效检索与分析,更快定位问题,持续挖掘数据价值,业界有商业的splunk软件,以及开源的ELK能够实现。本次将介绍Graylog来实现统一的日志收集和分析。 Graylog是一款优秀的日志收集分析软件,区别于ELK,它更加简洁,高效,部署使用更加简单,Graylog几乎集合了ELK的常用功能,支持数据收集、检索、可视化Dashboard管理,并提供REST服务接口服务,方便功能扩展与定制。 通过Graylog监控防火墙和waf日志并形成报告 在本例中,通过graylog,将防火墙和waf的日志进行收集并呈现,最终的效果图如下:

一:Graylog的安装部署 环境 1. 日志源:安全设备日志(Imperva WAF、Paloalto防火墙)等; 2. 日志分析:通过虚拟机单机部署,操作系统Centos 7.5,安装Graylog v 3.0.2版本,通过syslog收集防火墙和WAF日志。 graylog采用单机部署,架构如下

安装环境:linux centOS系统安装,本实例中准备的为7.5版本# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 安装顺序: 1.安装java sudo yum install java-1.8.0-openjdk-headless.x86_64 同时,后面需要pwgen工具,所以需要安装 EPEL,安装方法: sudo yum install epel-release sudo yum install pwgen 2.安装部署mongodb

MongoDB开发使用手册

MongoDB开发使用手册 一.基础部分 MongDB简介 1.NOSQL历史和产生原因 原因: 互联网用户数的增长和用户参与互联网习惯的改变 1.初始的静态内容网站,提供中心化的内容服务, 特点: 中心化,用户阅读内容 系统:Apache 2.动态网页内容,电子商务和论坛网站出现。 特点: 用户访问动态内容,并提供少量内容 系统:Apache+Mysql+Php, IIS+ASP+SQLSERVER, IIS+https://www.sodocs.net/doc/838782676.html,+SQLSERVER, TOMCAT+JSP+ORACLE 3. 博客出现: 去中心化网站出现。 特点:Web2.0网站的雏形用户阅读内容,并开始更多地参与网站的交互 系统: 高并发访问,数据库压力增大Memcached 缓存的出现,并出现数据库集群的概念 4.微博,淘宝等网站出现,以及云计算平台出现,如google,百度广告,等大规模系统 特点: 用户重复参与网站交互,和内容提供,而系统需要对用户行为进行分析 系统:支持高并发,及时响应,并能够实现分布式计算 NOSQL:Memcached, Redis, Hbase, 等NOSQL数据库,不仅仅是简单缓存,并能够提供分布式要求,包括复制,分片,水平分区,并提供复杂格式的数据存储 总结: 1.高并发读写操作 普通关系型数据库,很难满足高并发读写的要求,上万次读写的需求 2.海量数据存储 上亿用户产生大量数据,包括用户数据,访问日志,用户提供内容,用户状态记录等,这种海量数据的存储,关系型数据库已经很难满足,尤其是从海量数据中提取和汇总数据成为瓶颈 3.高可用性和高扩展性 关系型数据库也能支持,同步复制,水平分区扩展,但维护工作相当繁杂,并很难做到热扩展 4.内存操作(快速), 并发量高(非阻塞进程), 硬盘回写(数据完整和高效的平衡),备份和恢复 复制(高可用性,和连续服务), 分片(热扩展,海量数据) 操作简单(JSON),负载均衡,分布式部署(局域网,和物理部分), 事务支持

MongoDB基础教程

目录 1下载与安装---------------------------------------------------------------------------------2 2启动------------------------------------------------------------------------------------------2 3基本概念------------------------------------------------------------------------------------3 4常用命令------------------------------------------------------------------------------------3 4.1调用命令----------------------------------------------------------------------------3 4.2use------------------------------------------------------------------------------------4 4.3插入数据----------------------------------------------------------------------------4 4.4查询数据----------------------------------------------------------------------------5 4.4.1查询返回document---------------------------------------------------------6 4.4.2查询返回field---------------------------------------------------------------6 4.4.3结果排序--------------------------------------------------------------------7 4.4.4分页查询--------------------------------------------------------------------7 4.4.5查询数量--------------------------------------------------------------------7 4.5删除数据----------------------------------------------------------------------------7 4.6更新数据(与关系型差异较大)----------------------------------------------7 4.6.1增加field---------------------------------------------------------------------8 4.6.2upset--------------------------------------------------------------------------8 4.6.3批量更新--------------------------------------------------------------------8 4.7索引----------------------------------------------------------------------------------8 5其他------------------------------------------------------------------------------------------9 5.1使用web获得mongoDB的信息--------------------------------------------------9 5.2数据备份和恢复-------------------------------------------------------------------9 5.3导入导出数据----------------------------------------------------------------------9 6使用MongoDB-----------------------------------------------------------------------------9

相关主题