C# 访问mongodb数据库
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数据库相关推荐
- 使用Spring Data访问MongoDB数据库
本文将引导我们如何使用Spring Data MongoDB构建应用程序,并使用应用程序在MongoDB(基于文档的数据库)中存储数据与检索数据. 需要新建什么 我们要使用Spring Data Mo ...
- java mongodb id_Java访问MongoDB数据库生成的ID
自动生成的ID :"_id" : ObjectId("553f4d4d4700a63894bbebeb") 对应java中的类型: org.bson.types ...
- Serverless 解惑——函数计算如何访问 Mongo 数据库
函数计算(Function Compute):函数计算 是事件驱动的全托管计算服务.使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码.函数计算为您准备好计算资源,弹性地可靠地运行任务 ...
- mongodb 启动_程序员看过来:如何下载和安装MongoDB数据库?
我们将介绍如何下载安装MongoDB数据库以及如何在Windows上对该数据库进行访问. A.1 下载并安装MongoDB数据库 请访问MongoDB官网查找并下载适用于你的操作系统的MongoDB数 ...
- 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南
1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...
- mongodb时间范围查询少8个小时_为何要对开源mongodb数据库内核做二次开发
关于作者 前滴滴出行技术专家,现任OPPO文档数据库mongodb负责人,负责oppo千万级峰值TPS/十万亿级数据量文档数据库mongodb内核研发及运维工作,一直专注于分布式缓存.高性能服务端.数 ...
- 【大数据存储技术】实验2:MongoDB数据库的部署和操作
目录 1.实现MongoDB单实例的部署 1.1 安装MongoDB(Ubuntu版本:22.04 LTS) 1.1.1 查看Ubuntu版本 1.1.2 使用Ubuntu命令安装 1.2 启动Mon ...
- 如何通过公网访问MongoDB云数据库?
基于安全原因考虑,阿里云MongoDB云数据库目前只支持从阿里云ECS上访问,无法通过公网直接访问,不方便用户在本地开发环境里直接进行测试,本文介绍能让用户通过公网访问MongoDB云数据库的方案,切 ...
- 58 Node.js中操作mongoDB数据库
技术交流 QQ 群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder 的程序人生 1.数据库概述及环境搭建 1.1 为什么要使用数据库 动态网站中的数据都是存储在数据 ...
- spring mysql mongdb_Spring Boot中使用MongoDB数据库的方法
MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源的文 ...
最新文章
- NCHW与NHWC格式
- @ConfigurationProperties使用时几个常见误区
- ajax预加载html seo,AJAX网页如何实现SEO友好
- bex64 java 贴吧,Windows Web Server 2008 R2 x64上的BEX错误
- OpenCV-尺寸调整cv::resize
- css中float left与float right的使用说明
- 2021高考成绩已出城市查询,2021年青海高考成绩什么时候出来 公布时间
- 微软的补丁服务器,Microsoft 安全公告 MS17-010 - 严重
- Filenet路线更新及新版官网上线公告 ​
- 勒索病毒的克星来了 360安全团队独家发布文件恢复工具
- 常用域名管理后台网址
- bert获取词向量做textcnn文本分类
- ABYY OCR 文字识别软件 V15. 安装教程
- 站长紧急:新站要沉得住气
- 为什么微软是数字时代的领头羊?
- Spring Boot 分布式事物管理
- Python uiautomation初探,测试Win10计算器
- java与c#哪个用得多_Java和c#哪个更值得学习?
- 使用Python对文件进行批量改名
- NIO与JVM基本概念
热门文章
- python中str类型_python的str是什么类型
- 区块链以太坊开发测试网汇总
- fisco bcos transaction交易结构 源代码位置
- FISCO BCOS流量控制实现
- 区块链 FISCO BCOS学习文章(2)-FISCO BCOS怎么搭建
- 树莓派 口罩识别 python_RaspberryPi上实现佩戴口罩识别——2020电赛F题小记
- JFreeChart 简单使用
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_42、SpringBoot常用定时任务配置实战...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第三节SpringBoot热部署devtool和配置文件自动注入实战_16、注解配置文件自动映射到属性和实体类实战...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_5_InvalidClassException异常_原理...