使用c# 将原来的mssql 迁移 monogodb

1. 去http://www.mongodb.org/downloads#development下载


2. 直接点击安装


3. 使用adiministrator打开命令窗口


4. 运行命令mongod.exe --dbpath=c:/data/db --logpath=c:/mongodb/log/logs.txt  --logappend


其中 c:/data/db 是存放数据的目录,c:/mongodb/log/logs.txt是存放日志。--logappend表明日志的方式是追加


5. 下载http://www.mongovue.com/downloads/ 作为client端工具。 基本功能是免费的。


6. 连接数据库的程序

namespace Utility
{
    public class MonogoDBHelp
    {
        public  MongoDatabase getMongoDB()
        {
            string connectionString = "mongodb://localhost:27017";
            string databasename = "NJ";
            MongoClient client = new MongoClient(connectionString);
            MongoServer server = client.GetServer();
            MongoDatabase database = server.GetDatabase(databasename);
            return database;


        }
    }
}


按照手册,mongo driver 会管理连接池,所以可以使用single模式,但是我由于第一次使用,而且同时上线人数有可能过100,所以,暂时没有使用这种模式。直接使用文档建议写了一个help.

7. 插入数据

    mongo感觉是面向对象的,因此,尽管他不支持事务,但是,如果从面向对象的概念去考虑,完全可以在对象中包含对象。 

    在类中增加属性:public ObjectId Id { get; private set; }

    单笔插入操作

            MonogoDBHelp help = new MonogoDBHelp();
            MongoDatabase db = help.getMongoDB();

            LogBarCodeInfo log = new LogBarCodeInfo();
            log.ProcessId = "test1";

            MongoCollection collection = db.GetCollection<LogBarCodeInfo>("LogBarCodeInfo");

             collection.Save(log);

插入集合

使用insertbatch

        非常不幸,插入集合只能以key,value的形式产生BsonDocument数组才能插入。 因此,可以考虑在MonogoDBHelp增加一个传入IList,然后返回BsonDocument数组的方法。插入的效率非常不错


8. 搜索数据,考虑转换成使用Linq,   

         代码片段如下:

           MonogoDBHelp help = new MonogoDBHelp();
            MongoDatabase db = help.getMongoDB();
            MongoCollection collection = db.GetCollection<IQueryable>("LogBarCodeInfo");
            var query = from c in collection.AsQueryable<LogBarCodeInfo>()
                        where c.ModuleId == "JT130363" && c.UserNo.Equals("0995")
                        select c;

我采用了一个有400多万笔的document, 速度还是非常令人满意的

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值