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数据库的更多相关文章

  1. 使用spring boot访问mongodb数据库

    一. spring boot中传参的方法 1.自动化配置 spring Boot 对于开发人员最大的好处在于可以对 Spring 应用进行自动配置.Spring Boot 会根据应用中声明的第三方依赖 ...

  2. 使用Robo 3T访问MongoDB数据库

    使用Robo 3T操作MongoDB数据库教程:https://blog.csdn.net/baidu_39298625/article/details/99654596 在IDEA中用三个jar包链 ...

  3. Python访问MongoDB数据库

    #encoding: utf-8 __author__ = 'Administrator' #import pymongo from pymongo import MongoClient,GEO2D ...

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

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

  5. 孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库

    孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第三天.感觉这个东西学习起来还是那么困 ...

  6. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB

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

  7. 使用Robo 3T操作MongoDB数据库

    安装Robo 3T连接MongoDB数据库教程:https://blog.csdn.net/baidu_39298625/article/details/98845789 在IDEA中用三个jar包链 ...

  8. mongodb数据库禁止外网访问以及添加账号

    未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬.怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性. 一直未给自己的mongodb数据库设置账号密码 ...

  9. 怎样从外网访问内网MongoDB数据库?

    本地安装了一个MongoDB数据库,只能在局域网内访问到,怎样从外网也能访问到本地的MongoDB数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动MongoDB数据库 默认安装 ...

随机推荐

  1. json数组显示格式

    {“colorAndImg”:[{"颜色":“红色”,"地址":“www.sohu.com”}, {“颜色”:“绿色,“地址”:“www.sohu.com”}] ...

  2. Django学习系列之Form表单结合ajax

      Forms结合ajax Forms的验证流程: 定义用户输入规则的类,字段的值必须等于html中name属性的值(pwd= forms.CharField(required=True)=<i ...

  3. [Spring Boot ] Creating the Spring Boot Project : Demo: Creating a REST Controller

    In Spring boot, define a REST API endpoint is pretty easy. package com.globomatisc.bike.controllers; ...

  4. Excel数据字典转换为PDM(且显示表名、字段相应的中文描写叙述)

    在工作中遇到了一个问题就是把Excel数据字典转换为PDM. 可是转换完毕了全是英文,原来对表名.字段名的中文描写叙述就没有了. 且对于这个问题在powerdesigner15.2以后能够直接完毕.可 ...

  5. 某法院HP-P4500存储数据恢复案例

    好久没出来写博客了.过春节来了一直非常忙.尤其是近期,忙着做了好几个大单子.先是一个医院50TB的HP-EVA4400,接着是一个法院12TB的HP-P4500,前几天还有做了一个某游乐城12TB的V ...

  6. firewalld filter

    实现 firewalld  的filter 功能 1. 关闭 INPUT ,关闭OUTPUT  (设置黑名单) 任何主机 都 ping 不通 本主机 1>命令 : iptables -P INP ...

  7. hdu1863

    #include<cstdio> #include<algorithm> using namespace std; int N,M; struct edge { int u,v ...

  8. android菜鸟之路-事件分发机制总结(二)

    ViewGroup事件分发机制 自己定义一个LinearLayout,ImageView和Button,小二,上代码 <LinearLayout xmlns:android="http ...

  9. 加载jQuery库

    使用google <head> <script type="text/javascript" src="http://ajax.googleapis.c ...

  10. luogu 4429 染色

    bjoi 2018 染色 推了个错误结论得了60分? 题目大意: 一个无重边和自环的无向图,并且对每个点分别给了一个大小为2的颜色集合,只能从这个集合中选一种颜色给这个点染色 求一个染色方案使得没有两 ...