配色: 字号:
MongoDB Window&&Linux安装配置
2014-10-10 | 阅:  转:  |  分享 
  
MongoDBWindow$$Linux配置安装



以下为Windows在D:\MongoDB安装为例

Mongodb在Windows上的安装

首先,我们到Mongodb的官方网站http://www.mongodb.org/downloads下载,下载的版本目前是1.8.1,下载后,解压到文件夹,比如d:\mongodb-win32-1.8.1。接下来,我们可以观察下,该文件夹下有如下文件:



可以看到,mongodb可谓十分简单,只有10个文件。

接下来,我们学习下,如何将mongodb安装成windows中的服务,首先我们在d:\mongoDB下,可以通过—help选项,查看相关的帮助指令,如下:

??C:\MongoDB\bin>mongod?--help?WindowsServiceControlManageroptions:??--install????????????????installmongodbservice??--remove??????????????removemongodbservice??--reinstall????????????reinstallmongodbservice(equivilantofmongod?????????????????????????????--removefollowedbymongod--install)??--serviceNamearg??????????windowsservicename??--serviceDisplayNameargwindowsservicedisplayname??--serviceDescriptionarg????windowsservicedescription??--serviceUserarg??????????????usernameserviceexecutesas??--servicePasswordarg??????passwordusedtoauthenticateserviceUser

?可以看到,--install和—remove两个参数正是我们需要的。因此,将mongodb安装成windows服务的命令如下:

??mongod--dbpath"d:\MongoDB\data"--logpath"d:\MongoDB\logs\mongolog.log"--install--serviceName"MongoDB"

?上面的命令行中,用—dbpath参数指出了数据库的目录,--logpath则指出了日志存放的目录,而—serviceName参数则指出了,命名安装的服务名为MongoDB,运行后有如下提示:

all?outputgoing?to:d:\mongodb\logs\mongolog.logCreatingserviceMongoDB.Servicecreationsuccessful.Servicecanbestarted?from?thecommandlinevia?''netstart"MongoDB"''.

?并且可以在windows的控制面板中的服务中,看到该服务。而卸载服务的命令也很简单,如下:

mongod?--remove--serviceName"MongoDB"



配置用户信息:

进入MongoDB\bin下进入shell脚本

useadmin

db.addUser(‘dbuser’,''navi-tek2OO9'')

db.system.users.find()

db.auth(‘dbuser’,''navi-tek2OO9'')

添加数据库

useyq

db.Yq.insert({‘key’:’value’})

showcollections

db.createCollection(‘storybase’)









一.超级用户相关:



1.#进入数据库admin

useadmin

2.#增加或修改用户密码

db.addUser(''name'',''pwd'')

3.#查看用户列表

db.system.users.find()

4.#用户认证

db.auth(''name'',''pwd'')

5.#删除用户

db.removeUser(''name'')

6.#查看所有用户

showusers

7.#查看所有数据库

showdbs

8.#查看所有的collection

showcollections

9.#查看各collection的状态

db.printCollectionStats()

10.#查看主从复制状态

db.printReplicationInfo()

11.#修复数据库

db.repairDatabase()

12.#设置记录profiling,0=off1=slow2=all

db.setProfilingLevel(1)

13.#查看profiling

showprofile

14.#拷贝数据库

db.copyDatabase(''mail_addr'',''mail_addr_tmp'')

15.#删除collection

db.mail_addr.drop()

16.#删除当前的数据库

db.dropDatabase()



二.增删改

1.#存储嵌套的对象

db.foo.save({''name'':''ysz'',''address'':{''city'':''beijing'',''post'':100096},''phone'':[138,139]})

2.#存储数组对象

db.user_addr.save({''Uid'':''yushunzhi@sohu.com'',''Al'':[''test-1@sohu.com'',''test-2@sohu.com'']})

3.#根据query条件修改,如果不存在则插入,允许修改多条记录

db.foo.update({''yy'':5},{''$set'':{''xx'':2}},upsert=true,multi=true)

4.#删除yy=5的记录

db.foo.remove({''yy'':5})

5.#删除所有的记录

db.foo.remove()



三.索引

1.#增加索引:1(ascending),-1(descending)

2.db.foo.ensureIndex({firstname:1,lastname:1},{unique:true});

3.#索引子对象

4.db.user_addr.ensureIndex({''Al.Em'':1})

5.#查看索引信息

6.db.foo.getIndexes()

7.db.foo.getIndexKeys()

8.#根据索引名删除索引

9.db.user_addr.dropIndex(''Al.Em_1'')



四.查询

1.#查找所有

2.db.foo.find()

3.#查找一条记录

4.db.foo.findOne()

5.#根据条件检索10条记录

6.db.foo.find({''msg'':''Hello1''}).limit(10)

7.#sort排序

8.db.deliver_status.find({''From'':''ixigua@sina.com''}).sort({''Dt'',-1})

9.db.deliver_status.find().sort({''Ct'':-1}).limit(1)

10.#count操作

11.db.user_addr.count()

12.#distinct操作,查询指定列,去重复

13.db.foo.distinct(''msg'')

14.#”>=”操作

15.db.foo.find({"timestamp":{"$gte":2}})

16.#子对象的查找

17.db.foo.find({''address.city'':''beijing''})



五.管理

1.#查看collection数据的大小

2.db.deliver_status.dataSize()

3.#查看colleciont状态

4.db.deliver_status.stats()

5.#查询

6.db.deliver_status.totalIndexSize()





六.advancedqueries:高级查询



条件操作符

$gt:>

$lt:<

$gte:>=

$lte:<=

$ne:!=、<>

$in:in

$nin:notin

$all:all

$not:反匹配(1.3.3及以上版本)



查询name<>"bruce"andage>=18的数据

db.users.find({name:{$ne:"bruce"},age:{$gte:18}});



查询creation_date>''2010-01-01''andcreation_date<=''2010-12-31''的数据

db.users.find({creation_date:{$gt:newDate(2010,0,1),$lte:newDate(2010,11,31)});



查询agein(20,22,24,26)的数据

db.users.find({age:{$in:[20,22,24,26]}});



查询age取模10等于0的数据

db.users.find(''this.age%10==0'');

或者

db.users.find({age:{$mod:[10,0]}});



匹配所有

db.users.find({favorite_number:{$all:[6,8]}});

可以查询出{name:''David'',age:26,favorite_number:[6,8,9]}

可以不查询出{name:''David'',age:26,favorite_number:[6,7,9]}



查询不匹配name=B带头的记录

db.users.find({name:{$not:/^B./}});

查询age取模10不等于0的数据

db.users.find({age:{$not:{$mod:[10,0]}}});



#返回部分字段

选择返回age和_id字段(_id字段总是会被返回)

db.users.find({},{age:1});

db.users.find({},{age:3});

db.users.find({},{age:true});

db.users.find({name:"bruce"},{age:1});

0为false,非0为true



选择返回age、address和_id字段

db.users.find({name:"bruce"},{age:1,address:1});



排除返回age、address和_id字段

db.users.find({},{age:0,address:false});

db.users.find({name:"bruce"},{age:0,address:false});



数组元素个数判断

对于{name:''David'',age:26,favorite_number:[6,7,9]}记录

匹配db.users.find({favorite_number:{$size:3}});

不匹配db.users.find({favorite_number:{$size:2}});



$exists判断字段是否存在

查询所有存在name字段的记录

db.users.find({name:{$exists:true}});

查询所有不存在phone字段的记录

db.users.find({phone:{$exists:false}});



$type判断字段类型

查询所有name字段是字符类型的

db.users.find({name:{$type:2}});

查询所有age字段是整型的

db.users.find({age:{$type:16}});



对于字符字段,可以使用正则表达式

查询以字母b或者B带头的所有记录

db.users.find({name:/^b./i});



$elemMatch(1.3.1及以上版本)

为数组的字段中匹配其中某个元素



Javascript查询和$where查询

查询age>18的记录,以下查询都一样

db.users.find({age:{$gt:18}});

db.users.find({$where:"this.age>18"});

db.users.find("this.age>18");

f=function(){returnthis.age>18}db.users.find(f);



排序sort()

以年龄升序asc

db.users.find().sort({age:1});

以年龄降序desc

db.users.find().sort({age:-1});



限制返回记录数量limit()

返回5条记录

db.users.find().limit(5);

返回3条记录并打印信息

db.users.find().limit(3).forEach(function(user){print(''myageis''+user.age)});

结果

myageis18

myageis19

myageis20



限制返回记录的开始点skip()

从第3条记录开始,返回5条记录(limit3,5)

db.users.find().skip(3).limit(5);



查询记录条数count()

db.users.find().count();

db.users.find({age:18}).count();

以下返回的不是5,而是user表中所有的记录数量

db.users.find().skip(10).limit(5).count();

如果要返回限制之后的记录数量,要使用count(true)或者count(非0)

db.users.find().skip(10).limit(5).count(true);



分组group()

假设test表只有以下一条数据

{domain:"www.mongodb.org"

,invoked_at:{d:"2009-11-03",t:"17:14:05"}

,response_time:0.05

,http_action:"GET/display/DOCS/Aggregation"

}

使用group统计test表11月份的数据count:count()、total_time:sum(response_time)、avg_time:total_time/count;

db.test.group(

{cond:{"invoked_at.d":{$gt:"2009-11",$lt:"2009-12"}}

,key:{http_action:true}

,initial:{count:0,total_time:0}

,reduce:function(doc,out){out.count++;out.total_time+=doc.response_time}

,finalize:function(out){out.avg_time=out.total_time/out.count}

});



[

{

"http_action":"GET/display/DOCS/Aggregation",

"count":1,

"total_time":0.05,

"avg_time":0.05

}

]

献花(0)
+1
(本文系WINDevelops...首藏)