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!=)
{
Console.WriteLine("Tile关键字不符合要求" + key);
return null;
}
int level = ;
int x = ;
int y = ;
if(!int.TryParse(tmplist[],out level))
{
Console.WriteLine("Tile级别不符合要求" + key);
return null;
}
if (!int.TryParse(tmplist[], out x))
{
Console.WriteLine("X不符合要求" + key);
return null;
}
if (!int.TryParse(tmplist[], 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>=)
{
int xindex = x /(int) (Math.Pow(, ));
int yindex = y / (int)(Math.Pow(, )); int n = xindex * (int)Math.Pow(, level - ) + yindex+; ret = string.Format("Titles{0:D2}", n); }
return ret;
}
private string LevelToDBName(int level)
{
if(level>=&&level<=)
{
return "Level1-Level14";
}
else if(level>)
{
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; }
}
}
C# 访问mongodb数据库的更多相关文章
- 使用spring boot访问mongodb数据库
一. spring boot中传参的方法 1.自动化配置 spring Boot 对于开发人员最大的好处在于可以对 Spring 应用进行自动配置.Spring Boot 会根据应用中声明的第三方依赖 ...
- 使用Robo 3T访问MongoDB数据库
使用Robo 3T操作MongoDB数据库教程:https://blog.csdn.net/baidu_39298625/article/details/99654596 在IDEA中用三个jar包链 ...
- Python访问MongoDB数据库
#encoding: utf-8 __author__ = 'Administrator' #import pymongo from pymongo import MongoClient,GEO2D ...
- 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南
1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...
- 孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库
孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第三天.感觉这个东西学习起来还是那么困 ...
- 使用Spring访问Mongodb的方法大全——Spring Data MongoDB
1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...
- 使用Robo 3T操作MongoDB数据库
安装Robo 3T连接MongoDB数据库教程:https://blog.csdn.net/baidu_39298625/article/details/98845789 在IDEA中用三个jar包链 ...
- mongodb数据库禁止外网访问以及添加账号
未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬.怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性. 一直未给自己的mongodb数据库设置账号密码 ...
- 怎样从外网访问内网MongoDB数据库?
本地安装了一个MongoDB数据库,只能在局域网内访问到,怎样从外网也能访问到本地的MongoDB数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动MongoDB数据库 默认安装 ...
随机推荐
- css3自定义流动条
<style> .item { height: 180px; overflow: auto; width: 180px; float: left; margin: 11px; box-sh ...
- CLR GC
一.垃圾回收算法 每个应用程序都包含一组根(root),每个根都是一个存储位置,他要么为null,要么指向托管堆的一个对象,类型中定义的静态字段.局部变量.方法参数等都会被认为是根. 垃圾回收器(GC ...
- 洛谷 P3609 [USACO17JAN]Hoof, Paper, Scissor蹄子剪刀…
P3609 [USACO17JAN]Hoof, Paper, Scissor蹄子剪刀… 题目背景 欢迎提供翻译,请直接在讨论区发帖,感谢你的贡献. 题目描述 You have probably hea ...
- oracle11g expdp/impdp数据库
oracle11g导入/导出数据库 导出 .创建目录 sqlplus / as sysdba create directory dbDir as 'd:\oralce_sdic_backup\'; g ...
- ppc_85xx-gcc -shared -fPIC liberr.c -o liberr.so
fPIC作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code), 则产生的代码中,没有绝对地址,所有使用相对地址.故而代码能够被载入器载入到内存的随意 ...
- 在Windows上安装Nexus
在Windows上安装Nexus 学习了:https://www.cnblogs.com/yucongblog/p/6696736.html 下载地址:https://sonatype-downloa ...
- JSP学习笔记七之Cookie
首先提一下http协议的无状态性.指的是server不会记住已经给它发过请求的client. 每次收到请求都会觉得是一个新的client发过来的. (即:server不会记住给他发过请求的client ...
- 淘宝数据库OceanBase SQL编译器部分 源代码阅读--生成物理查询计划
SQL编译解析三部曲分为:构建语法树,制定逻辑计划,生成物理运行计划. 前两个步骤请參见我的博客<<淘宝数据库OceanBase SQL编译器部分 源代码阅读--解析SQL语法树>& ...
- Sqoop异常解决ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter问题
问题详情如下: 解决办法 这个是由于mysql-connector-java的bug造成的,出错时我用的是mysql-connector-java-5.1.10-bin.jar,更新成mysql-co ...
- java7中使用透明时与输入法冲突
在Stackoverflow的这找到了答案,需要设置一下系统参数: static { System.setProperty("sun.java2d.noddraw", " ...