项目中使用mongodb的尝试

1.下载。发现去官网下载不下来,最后直接百度搜索找到了一个3.0的较新的版本,是在MongoDB中文社区(http://www.mongoing.com/)找到的,目前他们还没有更新到官网的最新版本,不知道是不是也因为下载不下来。

2.安装。安装不用多说了,很是简单。也不需要其他东西的支持。

3.配置。mongodb安装后需要用命令行去操作,包括启动数据库,设置数据保存地址和日志保存地址等。另外需要将mongodb安装为windows服务才行,否则每次启动数据库需要打开一个cmd窗口,实在很麻烦。安装为windows服务这里让我纠结了一点时间,按照网上其他人说的命令去执行,发现服务虽然能装上,但是无法启动。后来又尝试了一个方法,终于可以了。现简略记录下来

第一步,创建mongo的日志目录和配置文件  cmd->  md C:\mongodb\log    

                    cmd-> echo logpath=C:\mongodb\log\mongo.log > C:\mongodb\mongod.cfg  这里的日志路径和cfg文件的路径自己决定

第二歩,运行 如下命令:C:\mongodb\bin>mongod.exe --config C:\mongodb\mongod.cfg --dbpath D:\Mongodb\db --install  即安装服务和指定默认 的数据库目录

第三步,启动服务: net start mongodb

4.写代码访问数据库。操作数据库有两种方式,一种是官方驱动的还有一种方便使用linq的,我用的是第二种,下载地址是https://github.com/samus/mongodb-csharp,里面就直接有操作的例子了。

5.可视化查询工具。如果想长期使用,用可视化的方式来查询数据库是很好的操作。可以使用的工具是Robomongo,直接下载安装就行了。安装之后就可以新建连接来连接数据库查看了。

6.mongodb的远程访问。首先要解决的问题是服务器上的mongodb能够允许远程访问,需要添加账号并进行设置。刚开始我是参照这个http://www.bubuko.com/infodetail-1153759.html帖子里面的步骤来进行的:

先使用非安全模式进行访问,创建管理账号。不过因为我使用的是3.0+的版本,所以要先修改下mongodb的认证信息才行。

修改命令如下,进入shell:

> use admin 
switched to db admin 
>  var schema = db.system.version.findOne({"_id" : "authSchema"}) 
> schema.currentVersion = 3 
3 
> db.system.version.save(schema) 
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 

在修改完成之后再创建用户。下面附带创建数据库用户的shell

1 创建一个root用户:

use admin
db.createUser(
    {
      user: "root",
      pwd: "123456",
      roles: [ "root" ]
    }
)

2 创建admin用户

use admin
db.createUser(
  {
    user: "admin",
    pwd: "admin",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

3 创建具体数据库的用户(这里可能并不需要这么多权限,只不过我最后测试修改成这样后才可以访问的)

use test
db.createUser(
  {
    user: "test",
    pwd: "password",

"roles" : [
{
"role" : "userAdmin",
"db" : "test"}, 

{
"role" : "readWrite",
"db" : "test"

}
]

  }
)

最后都要认证一下

db.auth("user", "pwd")

返回1代表成功,0代表失败。

 

执行后敲入命令 C:\mongodb\bin>mongod.exe --config C:\mongodb\mongod.cfg --dbpath D:\Mongodb\db --auth --install

--auth表示启动安全模式

然后再启动服务就行了

远程连接到服务器的mongodb

  1.cd 到安装的目录

  2.执行mongo 192.168.0.1:27017/数据库名称 -u 用户名-p 密码

  服务器地址根据真实情况而定。

最后要修改程序中访问mongodb的代码

  

 public MyMongoDb()
            : this("mongodb://test:123456@localhost/test", "test")
        {
        }

 

记使用中遇到的问题:

  1.时区问题。今天在使用过程中发现我保存到mongodb的时间跟实际保存的不一致,差了8个小时,查了一下明白了是因为时区不一样,后来测试了一下数据读取出来后时间又是正确的了,所以这个问题可以不用去管了。看到有人说可以在实体属性上加上[MongoDB.Bson.Serialization.Attributes.BsonDateTimeOptions(Kind = DateTimeKind.Local)],我试着加了下MongoDB.Bson下并没有找到Serialization,不知道是因为少引用了程序集还是版本问题。大家也遇到这个问题的话可以尝试一下。

  2.要删除mongodb服务,可以使用指令sc delete mongodb

  3.开启远程访问一定要注意schema.currentVersion的值要修改为3,否则会验证不通过。需要注意创建的用户credentials的类型应该是MONGODB-CR,如果不是就在schema.currentVersion值为3的情况下重新创建用户,如果已经启动了需要验证再访问,这时要使用admin账号进行操作,创建用户时记得切换数据库。

  4.如果需要迁移到其他服务器,只要先把mongodb安装好,并且配置好配置文件和数据库文件夹的地址,再将原来的数据库文件直接拷贝过来覆盖即可,这样原来的用户信息和数据就都存在了,不需要重新创建用户。最后再将mongodb设置为安全模式的服务并自启动就可以了。

 

参照网址:

http://www.cnblogs.com/fish-li/archive/2011/06/26/2090800.html

http://www.cnblogs.com/isdavid/p/3298675.html

http://www.bubuko.com/infodetail-1153759.html

http://www.bubuko.com/infodetail-1121667.html

posted @ 2016-03-25 16:48  aiwuziji  阅读(1356)  评论(0编辑  收藏  举报