mogoDB的安装

来源:互联网 发布:java 积分商城 编辑:程序博客网 时间:2024/05/29 15:45


windows下的安装

参考地址:http://www.cnblogs.com/mecity/archive/2011/06/11/2078527.html


安装结束:把mongoDB作为windows服务命令:

mongod --logpath "c:\Program Files\mongodb\data\log"\mongodb.log --logappend --dbpath "c:\Program Files\mongodb\data\db"  --directoryperdb --serviceName MongoDB --install



结果如下:

我哭:我的版本不行


只能先这样启动了:

cd 到mongo的bin目录下:

启动数据库:mongod --dbpath "c:\Program Files\mongodb\data\db" --这里写错了fuck!!下面的正确。。。

启动数据库:mongod --dbpath "c:\Program Files\mongodb\data" 


1、正常启动

【mongod--dbpath /usr/mongo/data --logfile /var/mongo.log】

说明:

指定数据存储目录和日志目录,如果采用安全认证模式,需要加上--auth选项,如:

mongod --auth --dbpath /usr/mongo/data --logfile/var/mongo.log 

2、以修复模式启动

mongod --repair

以修复模式启动数据库。

实际很可能数据库数据损坏或数据状态不一致,导致无法正常启动MongoDB服务器,根据启动信息可以看到需要进行修复。或者执行:

mongod -f /etc/mongodb.conf --repair



启动客户端:

新开一个窗口:也是cd到bin目录:

启动客户端:mongo.exe

终止服务器进程(在客户端进行)

db.shutdownServer()



linux下安装mongo

一、下载mongo包 

MongoDB提供了linux平台上32位和64位的安装包,你可以在官网下载安装包。

下载地址:http://www.mongodb.org/downloads

二、建立需要的目录结构:必须在根目录下建立



三、安装

下载完成后,在你安装的目录下解压zip包。



四、启动mongo服务端:mongod命令


五、启动客户端:mongo命令



============================================================================



启动报错:一般原因是上一次不正确关闭mongo导致:

Mongo非法关闭启动失败解决方法:

 

1、删除%MONGO_HOME%/data下的.lock文件

    data/db目录下也有个lock文件一并删除了就好了

 

2、输入命令 mongod --repair

 

3、重启mongoDB



写的比较好的总结:推荐下:http://www.blogs168.com/article/503.aspx

MongoDb基本命令:

首先推荐个写的很好的:http://blog.csdn.net/shirdrn/article/details/7105539:


1、showdbs

显示当前数据库服务器上的数据库

2、use pagedb

 切换到指定数据库pagedb的上下文,可以在此上下文中管理pagedb数据库以及其中的集合等

3、show collections(原先的show tables,查看所有表)

显示数据库中所有的集合(collection)

4、db.serverStatus()  

查看数据库服务器的状态。示例如下所示:

5、查询指定数据库统计信息

use fragment

db.stats()

6、查询指定数据库包含的集合名称列表

db.getCollectionNames()//获取所有的表名称

["posts", "sessions", "system.indexes","users" ]

二)基本DDL和DML

 

1、创建数据库

如果你习惯了关系型数据库,你可能会寻找相关的创建数据库的命令。在MongoDB中,你可以直接通过use dbname来切换到这个数据库上下文下面,系统会自动延迟创建该数据库

  1. > show dbs  
  2. admin   0.03125GB  
  3. local   (empty)  
  4. pagedb  0.03125GB  
  5. test    0.03125GB  
  6. > use LuceneIndexDB  
  7. switched to db LuceneIndexDB  
  8. > show dbs  
  9. admin   0.03125GB  
  10. local   (empty)  
  11. pagedb  0.03125GB  
  12. test    0.03125GB  
  13. > db  
  14. LuceneIndexDB  
  15. > db.lixlTable.save({'userName':'lixl','company':'test'});
  16. 建表的第一种方式:db.表名.save('字段1':'值1','字段2':'值2');//直接插入值
  17. > show dbs  
  18. lixlTable  0.03125GB  
  19. admin   0.03125GB  
  20. local   (empty)  
  21. pagedb  0.03125GB  
  22. test    0.03125GB  
  23. >  
可见,在use指定数据库后,并且向指定其中的一个集合并插入数据后,数据库和集合都被创建了。

2、删除数据库

直接使用db.dropDatabase()即可删除数据库。直接删除当前use的db

> show dbs;
lixl    0.0625GB
local   0.03125GB
microblog       0.0625GB
> db.dropDatabase();
{ "dropped" : "lixl", "ok" : 1 }

3、创建集合//其实就是创建表

可以使用命令db.createCollection(name,{ size : ..., capped : ..., max : ... } )创建集合,示例如下所示:

[plain] viewplaincopy

1.  >  db.createCollection('lixlTable2',{'userName':'linan'});

 建表的第二种方式:db.createCollection('表名',{'capped':true, 'size':10240, 'max':17855200})//只是建立表没有插入值

后面的这三个参数名称是固定的,但是可以没有:

capped:

size:大小

max:最大值

可以直接写db.createCollection('表名');

2. { "ok" : 1 }  

3. > show collections  

4. lixlTable2

5. storeCollection  

6. system.indexes  

4、删除集合

删除集合,可以执行db.mycoll.drop()。

5、插入更新记录

直接使用集合的save方法,如下所示:


db.lixlTable2.save({  "type" : "google",  "os" : "chrom",  "address" : "california"})

更新记录,使用save会将原来的记录值进行覆盖实现记录更新。

6、查询一条记录

使用findOne()函数,参数为查询条件,可选,系统会随机查询获取到满足条件的一条记录(如果存在查询结果数量大于等于1)示例如下所示:

 db.lixlTable2.findOne({'address':'california'});

{
       "_id" : ObjectId("52b1beefda6a86cb17c990c6"),
       "type" : "google",
       "os" : "chrom",
       "address" : "california"

}

7、查询多条记录

使用find()函数,参数指定查询条件,不指定条件则查询全部记录。

> db.lixlTable2.find({'address':'california'});
{ "_id" : ObjectId("52b1beefda6a86cb17c990c6"), "type" : "google", "os" : "chrom
", "address" : "california" }
{ "_id" : ObjectId("52b1bf0bda6a86cb17c990c7"), "type" : "google", "os" : "chrom
", "address" : "california" }
>

8、删除记录

使用集合的remove()方法,参数指定为查询条件,示例如下所示:

a.根据条件删除:

 db.lixlTable2.remove({'name':'lixl'})

b.全部删除:

db.lixlTable2.remove()

9、创建索引

可以使用集合的ensureIndex(keypattern[,options])方法,示例如下所示:

> use pagedb

switched to dbpagedb

>db.page.ensureIndex({'title':1, 'url':-1})

>db.system.indexes.find()

{ "name": "_id_", "ns" : "pagedb.page", "key" :{ "_id" : 1 }, "v" : 0 }

{ "name": "_id_", "ns" : "pagedb.system.users","key" : { "_id" : 1 }, "v" : 0}

{ "_id": ObjectId("4ef977633c1fc4613425accd"), "ns" :"pagedb.page", "key" : {"title" : 1,"url" : -1 }, "name" : "title_1_url_-1","v" : 0 }

10、查询索引

我们为集合建立的索引,那么可以通过集合的getIndexes()方法实现查询,示例如下所示:

[plain] viewplaincopy

1.  > db.page.getIndexes()  

2. [  

3.         {  

4.                 "name" : "_id_",  t3223

5.                 "ns" : "pagedb.page",  

6.                 "key" : {  

7.                         "_id" : 1  

8.                 },  

9.                 "v" : 0  

10.         },  

11.         {  

12.                 "_id" : ObjectId("4ef977633c1fc4613425accd"),  

13.                 "ns" : "pagedb.page",  

14.                 "key" : {  

15.                         "title" : 1,  

16.                         "url" : -1  

17.                 },  

18.                 "name" : "title_1_url_-1",  

19.                 "v" : 0  

20.         }  

21. ]  

当然,如果需要查询系统中全部的索引,可以使用db.system.indexes.find()函数。
11、删除索引

删除索引给出了两个方法:

[plain] viewplaincopy

1.  db.mycoll.dropIndex(name)  

2. db.mycoll.dropIndexes()  

第一个通过指定索引名称,第二个删除指定集合的全部索引。

13、统计集合记录数

use fragment

db.baseSe.count()
统计结果,如下所示:

[plain] viewplaincopy

1.  > use fragment  

2. switched to db fragment  

3. > db.baseSe.count()  

4. 36749  

上述统计了数据库fragment的baseSe集合中记录数。


=========================================================

mongoDB特点:

如果插入这样三个对象则,

{
  "_id" : ObjectId("52b1bbd792ba3c19705afe4b"),
  "name" : "lixl",
  "address" : "bj"
}


/* 1 */
{
  "_id" : ObjectId("52b1bc6d92ba3c19705afe4c"),
  "type" : "apple",
  "os" : "ios",
  "company" : "apple"
}


/* 2 */
{
  "_id" : ObjectId("52b1bceb92ba3c19705afe4d"),
  "type" : "windows",
  "os" : "windows",
  "address" : "seattle"
}

数据库是这样的:


也就是说,如果插入的json数据,有不同的列则,这些列会取并集。

原创粉丝点击