1.引用四个mongodb动态库MongoDB.Bson.dll,MongoDB.Driver.Core.dll,MongoDB.Driver.dll,MongoDB.Driver.Legacy.dll

    /// <summary>/// 从mongodb数据库获取谷歌影像/// </summary>public class MongoDBReaderHelper{/// <summary>/// 链接字符串/// </summary>private string conn = "mongodb://127.0.0.1:27017";/// <summary>/// 指定的数据库/// </summary>private string dbName = "Level1-Level14";/// <summary>/// Mongo客户端/// </summary>private MongoClient client;/// <summary>/// 当前操作数据库/// </summary>protected IMongoDatabase database;/// <summary>/// 当前操作的数据库表/// </summary>protected IMongoCollection<Tiled> collection;private Dictionary<string, IMongoCollection<Tiled>> CollectionList = new Dictionary<string, IMongoCollection<Tiled>>();public bool InitMongoDB(string connectionString){this.conn = connectionString;client = new MongoClient(conn);if (client == null){//cons .Show("服务器连接失败");Console.WriteLine("mongodb数据库连接失败");return false;}database = client.GetDatabase(dbName);collection = database.GetCollection<Tiled>("Titles");//数据库表this.CollectionList.Add(dbName, collection);Console.WriteLine("mongodb数据库连接成功");return true;}/// <summary>/// 获取瓦片/// </summary>/// <param name="key">Key值:4-6-11</param>/// <param name="collection"></param>/// <returns>把图片输出到本地</returns>protected async Task<byte[]> _GetTiled(string key, IMongoCollection<Tiled> collection){if (collection == null) return null;var filter = Builders<Tiled>.Filter.Eq("_id", key);Task<Tiled> document = collection.Find<Tiled>(filter).FirstOrDefaultAsync();Tiled tiled = await document;//if (tiled != null)//{//    string filename = tiled.Key + ".jpg";//    byte[] img = tiled.ByteImg;//    using (FileStream fs = new FileStream(filename, FileMode.CreateNew))//    {//        fs.Write(img, 0, img.Length);//        fs.Close();//    }//}return tiled.ByteImg;}/// <summary>/// 获取瓦片/// </summary>/// <param name="key">Key值:4-6-11</param>/// <param name="collection"></param>/// <returns>把图片输出到本地</returns>public async Task<byte[]> GetTiled(string key){string[] tmplist = key.Split('-');if(tmplist.Length!=3){Console.WriteLine("Tile关键字不符合要求" + key);return null;}int level = 0;int x = 0;int y = 0;if(!int.TryParse(tmplist[0],out level)){Console.WriteLine("Tile级别不符合要求" + key);return null;}if (!int.TryParse(tmplist[1], out x)){Console.WriteLine("X不符合要求" + key);return null;}if (!int.TryParse(tmplist[2], out y)){Console.WriteLine("Y不符合要求" + key);return null;}return await _GetTiled(key, GetCollection(level,x,y));}private IMongoCollection<Tiled> GetCollection(int level,int x,int y){string dbname = LevelToDBName(level);if(dbname==""){return null;}string tablename = LXYToTableName(level, x, y);string key = string.Format("{0}_{1}", dbname, tablename);Console.WriteLine(string.Format("{0},{1},{2}-->{3}",level,x,y,key));if (!this.CollectionList.ContainsKey(key)){database = client.GetDatabase(key);if(database==null){return null;}collection = database.GetCollection<Tiled>(tablename);//数据库表this.CollectionList.Add(key, collection); }return this.CollectionList[key];}private string LXYToTableName(int level, int x, int y){string ret = "Titles";if(level>=15){int xindex = x /(int) (Math.Pow(2, 15));int yindex = y / (int)(Math.Pow(2, 15));int n = xindex * (int)Math.Pow(2, level - 15) + yindex+1;ret = string.Format("Titles{0:D2}", n);}return ret;}private string LevelToDBName(int level){if(level>=1&&level<=14){return "Level1-Level14";}else if(level>14){return string.Format("Level{0}", level);}return "";}}/// <summary>/// 对应数据库中的数据表/// </summary>public class Tiled{//public UInt64 Id { get; set; }/// <summary>/// 图片流/// </summary>public byte[] ByteImg { get; set; }[BsonId]public string Key { get; set; }}
}

View Code

转载于:https://www.cnblogs.com/HouseNumber1703/p/5842313.html

C# 访问mongodb数据库相关推荐

  1. 使用Spring Data访问MongoDB数据库

    本文将引导我们如何使用Spring Data MongoDB构建应用程序,并使用应用程序在MongoDB(基于文档的数据库)中存储数据与检索数据. 需要新建什么 我们要使用Spring Data Mo ...

  2. java mongodb id_Java访问MongoDB数据库生成的ID

    自动生成的ID :"_id" : ObjectId("553f4d4d4700a63894bbebeb") 对应java中的类型: org.bson.types ...

  3. Serverless 解惑——函数计算如何访问 Mongo 数据库

    函数计算(Function Compute):函数计算 是事件驱动的全托管计算服务.使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码.函数计算为您准备好计算资源,弹性地可靠地运行任务 ...

  4. mongodb 启动_程序员看过来:如何下载和安装MongoDB数据库?

    我们将介绍如何下载安装MongoDB数据库以及如何在Windows上对该数据库进行访问. A.1 下载并安装MongoDB数据库 请访问MongoDB官网查找并下载适用于你的操作系统的MongoDB数 ...

  5. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

  6. mongodb时间范围查询少8个小时_为何要对开源mongodb数据库内核做二次开发

    关于作者 前滴滴出行技术专家,现任OPPO文档数据库mongodb负责人,负责oppo千万级峰值TPS/十万亿级数据量文档数据库mongodb内核研发及运维工作,一直专注于分布式缓存.高性能服务端.数 ...

  7. 【大数据存储技术】实验2:MongoDB数据库的部署和操作

    目录 1.实现MongoDB单实例的部署 1.1 安装MongoDB(Ubuntu版本:22.04 LTS) 1.1.1 查看Ubuntu版本 1.1.2 使用Ubuntu命令安装 1.2 启动Mon ...

  8. 如何通过公网访问MongoDB云数据库?

    基于安全原因考虑,阿里云MongoDB云数据库目前只支持从阿里云ECS上访问,无法通过公网直接访问,不方便用户在本地开发环境里直接进行测试,本文介绍能让用户通过公网访问MongoDB云数据库的方案,切 ...

  9. 58 Node.js中操作mongoDB数据库

    技术交流 QQ 群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder 的程序人生 1.数据库概述及环境搭建 1.1 为什么要使用数据库 动态网站中的数据都是存储在数据 ...

  10. spring mysql mongdb_Spring Boot中使用MongoDB数据库的方法

    MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源的文 ...

最新文章

  1. NCHW与NHWC格式
  2. @ConfigurationProperties使用时几个常见误区
  3. ajax预加载html seo,AJAX网页如何实现SEO友好
  4. bex64 java 贴吧,Windows Web Server 2008 R2 x64上的BEX错误
  5. OpenCV-尺寸调整cv::resize
  6. css中float left与float right的使用说明
  7. 2021高考成绩已出城市查询,2021年青海高考成绩什么时候出来 公布时间
  8. 微软的补丁服务器,Microsoft 安全公告 MS17-010 - 严重
  9. Filenet路线更新及新版官网上线公告 ​
  10. 勒索病毒的克星来了 360安全团队独家发布文件恢复工具
  11. 常用域名管理后台网址
  12. bert获取词向量做textcnn文本分类
  13. ABYY OCR 文字识别软件 V15. 安装教程
  14. 站长紧急:新站要沉得住气
  15. 为什么微软是数字时代的领头羊?
  16. Spring Boot 分布式事物管理
  17. Python uiautomation初探,测试Win10计算器
  18. java与c#哪个用得多_Java和c#哪个更值得学习?
  19. 使用Python对文件进行批量改名
  20. NIO与JVM基本概念

热门文章

  1. python中str类型_python的str是什么类型
  2. 区块链以太坊开发测试网汇总
  3. fisco bcos transaction交易结构 源代码位置
  4. FISCO BCOS流量控制实现
  5. 区块链 FISCO BCOS学习文章(2)-FISCO BCOS怎么搭建
  6. 树莓派 口罩识别 python_RaspberryPi上实现佩戴口罩识别——2020电赛F题小记
  7. JFreeChart 简单使用
  8. 小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_42、SpringBoot常用定时任务配置实战...
  9. 小D课堂 - 零基础入门SpringBoot2.X到实战_第三节SpringBoot热部署devtool和配置文件自动注入实战_16、注解配置文件自动映射到属性和实体类实战...
  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_5_InvalidClassException异常_原理...