Mongodb Driver for C#/.Net的增删改查

我之前在《.Net Core系列教程(三)——使用Mongodb》中,说过在.Net Core下,怎样使用Mongodb数据库,这篇文章就作为它的延伸,来说下在.Net中,怎样使用Mongodb Driver来进行最常用的增、删、改、查操作。当然,我这个的环境是在.Net Core下,在其他版本的.Net环境下,相差不大。我这实例中使用的驱动是2.4.0版的,而现在最新版本是2.4.4。
闲言少叙,还是撸代码吧。
先按《.Net Core系列教程(三)——使用Mongodb》文章中的方法,设置好数据库的相关配置,之后取得数据库:

    var db = client.GetDatabase("database");

这个代码可以按照自己的实际需求来写,比如这样:

    var db = client.GetDatabase(MongoUrl.Create(settings.Value.MongodbConnection).DatabaseName);

取得一个collection,这里以news表为例,Models.News是News的实例类:

    var collection = db.GetCollection<Models.News>("news");

我们再准备一下具体要操作的数据:

    var request=new Models.News(){title:"新闻测试",body:"这里是新闻测试的内容",author:"张三","status":True};

这些前提准备好了之后,再开始具体的数据库操作了

1.增加操作:

    collection.InsertOne(request);

2.修改操作:

    var query = new BsonDocument("_id", new ObjectId(id));
    var dict = new Dictionary<string, object> {
        { "title",request.title},
        { "body",request.body},
        { "author",request.author},
        { "status",request.status}
    };
    var data = new BsonDocument(dict);
    collection.UpdateOne(query, new BsonDocument("$set", data));

3.查询操作:

    //查列表
    int page=1;  //当前页号
    int pagesize=50;  //每页50条记录
    BsonDocument query = new BsonDocument(){"author":"张三","status":True};
    int total = Convert.ToInt32(collection.Count(query));  //数据总记录数
    var list = collection.Find(query).Sort(new BsonDocument("_id", -1)).Limit(pagesize).Skip((page-1)*pagesize).ToList();  //带分页查询,按_id倒序排序
    
    //查单条
    BsonDocument query = new BsonDocument("_id", _id);
    var data = collection.Find(query).FirstOrDefault();

4.删除操作:

    ObjectId _id = new ObjectId(id);
    collection.DeleteOne(new BsonDocument("_id", _id));

以上只是其中几个比较简单的用法,其实还有很多实现方法,比如异步方法、插入多条等等,其他的等有时间再整理吧。

【转】jetbrains全家桶授权服务器

授权服务器打包成Docker镜像,目前的话整个镜像是87M左右。全部在一个RUN中构建,减少了docker镜像的layer。

服务使用

网址
http://idea.jinfeijie.cn

使用方法

使用方法是非常简单的。只需要的License Server 处填写http://idea.jinfeijie.cn,如下图。
006tKfTcly1fl3kzogwhfj309g08c75e.jpg

速度测试结果

原本是想使用百度的云加速的,但是明明备案的域名却显示未备案。所以就直接用upyun进行CDN加速了。日后会加入七牛的加速。
看一波全国的测速。
006tKfTcly1fl3l0cq9ghj30fr0btgp7.jpg
授权后的效果
006tKfTcly1fl3l0p0673j30fr09wanv.jpg

个人部署

如果不喜欢我的网址,觉得自己搭建一个会更加好,可以使用docker镜像进行构建。

部署服务

  1. 通过Dockerfile文件部署服务
    本地构建 docker build -f Dockerfile -t idea ./

本地部署 docker run -d -e PORT=8888 -e USER=jinfeijie.cn -p 8888:8888 --restart=always --name=idea idea

  1. 通过远程dockerhub部署服务
    获取远程镜像 docker pull mrjin/idea:latest

本地部署镜像 docker run -d -e PORT=8888 -e USER=jinfeijie.cn -p 8888:8888 --restart=always --name=idea mrjin/idea:latest

docker参数

环境变量默认值备注
PORT8888内部端口号
USERjinfeijie.cn授权用户

Nginx 反向代理

server
{
        listen 80;
        #listen [::]:80;
        server_name idea.jinfeijie.cn;
        root  /home/wwwroot/idea.jinfeijie.cn;
    location / {
        proxy_pass http://127.0.0.1:8888;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    error_log /dev/null; #error_log end
    access_log  /home/wwwlogs/idea.jinfeijie.cn.log;
}

原文:https://jinfeijie.cn/post-328.html
感谢原作者的贡献,如果手头宽裕的话,还请支持正版。

老徐洗牙记

老徐一直自认为自己的牙齿是最棒的,虽然长的能难看了点,但是还是很结实的。直到有一天,发现自己左边的牙齿不敢吃东西了,而且有难以去除的口臭,哪怕天天刷牙、用牙线、嚼木糖醇也济于事,这两个问题一直困扰着老徐。看来是要解决这两个问题了,老徐做出了一个艰难的决定——去洗牙!
为什么说这是一个艰难的决定呢?因为在老徐的眼里,不不,是在老徐的心里,对弄牙是恐惧的,一提到弄牙,想到的就是电钻、钳子、锤子等比较暴力的工具,太吓人了有没有?在老徐做了要洗牙的决定之后,也是一直没有开始行动,因为对洗牙的恐惧,加深了拖延的程度。
直到今天,嗯,是今天上午,老徐出发了,向着口腔诊所出发。诊所离老徐家很近,和口腔诊所的老板倒不能说熟,但也是认识,因为老徐的小姨子和老婆都去弄过牙。
到了之后,里面还是挺忙的,在外面候诊区等了一会儿,才有了空台,进去了之后,因为是第一次洗牙,心中难免比较忐忑,不安的问医生洗牙的时候会不会疼。开始洗了,大部分时候都不疼,有时候都没有什么感觉,只是过程中需要一直张着嘴巴,会比较累,中间的时候,会有疼的时候,但是不是太多,出了些血,也不是太多,比平时的牙龈出血能多一点。在洗的过程中,老徐甚至会想,如果中途我不想洗了,会怎样。
不是太好,左边的牙不能吃东西,是左上第二颗牙有个洞,这个洞还是给堵上吧,免的以后给我整出现什么妖蛾子来。大概一个小时左右,牙洗完了,准备要堵洞了,需要把洞里面的脏东西清理出来,清理到最后感觉有些疼。而且清理的过程中,发现在旁边也就是第三颗牙上也有个洞,一咬牙一跺脚(大雾,当时不能咬牙也不能跺脚)两个都堵了,来都已经来了,都上案子上了还怕这点事?
整个过程很顺利,一次性完成了第一次洗牙和修牙堵洞这两件事。
是的,这个老徐就是我,虽然堵牙并不怎么疼,没法和拔牙相比,但是整个过程真的是很难熬,经历过一次之后,真的不想再经历了。好好爱护自己的牙齿吧。
最后,附上一个关于怎样保护牙齿的节目:春妮的周末时光 :爱牙日的聚会 郑渊洁丁鹏月亮

IIS服务器域名证书续订

我们知道,在Windows的IIS服务器上,使用域名证书开启HTTPS并不是非常方便,在IIS 7.5及之前的版本上,添加HTTPS站点时,并不能指定主机头(即域名),需要加完之后,到IIS的配置文件中去修改配置,增加了一定的难度;而且如果之后相关的配置有变动,也可能会影响到之前的HTTPS站点,有很多坑。而域名证书到期,需要换证书的话,如果之前添加过很多个HTTPS站点,都会受到影响,需要一个一个的站点重新选择证书,重新修改IIS的配置文件,是一个让人头疼的操作。
那如果是域名证书到期了,有没有什么办法可以简化我们的操作呢?答案是有的,那就是使用证书续订操作。
证书续订,需要的证书格式是cer的,我们以从阿里云上申请的通配符域名证书为例来说一下。从阿里云后台下载下来的域名证书格式,有pem和pfx格式的,唯独没有cer格式的,需要自己转换一下。下面先说下格式转换吧:
pem转cer,需要使用openssl,另外需要key文件。一共需要进行3次转换操作,才能转成cer格式:
1.先从pem转到p12,之后需要设置密码:

OpenSSL> pkcs12 -export -out a.p12 -in 1.pem -inkey 1.key
Loading 'screen' into random state - done
Enter Export Password:
Verifying - Enter Export Password:

2.从p12转为crt格式,输入第1步设置的密码:

OpenSSL> pkcs12 -in a.p12 -out b.crt -nokeys -clcerts
Enter Import Password:
MAC verified OK

3.最后一步,从crt转为cer:

OpenSSL> x509 -inform pem -in b.crt -outform der -out c.cer
OpenSSL>

pem2cer.png
使用OpenSSL进行证书格式转换

格式转完之后,把生成的cer文件上传到服务器,随便找个地方放着。打开IIS管理器,选中IIS管理器的网站根,在右侧功能区,打开IIS下的“服务器证书”
1.png
打开服务器证书

选中要续订的证书,之后点击右侧栏的“续订”
2.png
选择续订

打开“续订现有证书”对话框,选择最后一项:“完成证书续订申请”
3.png
完成证书续订申请

选择我们转换为cer的新证书
4.png
选择证书

点击“完成”按钮,完成续订申请
5.png
完成

之后就已经完成了,我们随便打开一个https网站,查看下证书详情,会发现过期日期已经是最新的了。

Windows版OpenSSL下载:点击下载OpenSSL

为Typecho增加彩色标签云

Typecho是一个轻量级的博客程序,轻量意味着很多其他博客程序(如Wordpress等)具有的功能或模块而Typecho没有,比如说侧栏上的标签云就没有显示,但是其实Typecho已经有了关于标签云的挂件,只是没有显示出来而已,需要我们自己添加一下。
具体操作如下:
登录后台,控制台——外观——编辑当前外观,选择侧边栏的模板,把代码添加一下,比如我的这样写的:

    <section class="widget">
        <h3 class="widget-title"><?php _e('标签云'); ?></h3>  
        <?php $this->widget('Widget_Metas_Tag_Cloud', 'ignoreZeroCount=1&limit=30&sort=count&desc=1')->to($tags); ?>
        <?php if($tags->have()): ?>     
            <?php while ($tags->next()): ?>   
                <a style="color:rgb(<?php echo(rand(0,255)); ?>,<?php echo(rand(0,255)); ?>,<?php echo(rand(0,255)); ?>);font-size:<?php echo(rand(12,22));?>px;" href="<?php $tags->permalink();?>" title="<?php $tags->count(); ?> 个话题"><?php $tags->name(); ?></a>
            <?php endwhile; ?> 
        <?php endif; ?>
    </section>

其中:

ignoreZeroCount=1 表示不显示0文章的标签
limit=30 取前30条记录
sort=count 按文章数排序
desc=1 倒序

以上代码参考了官方文档:
http://docs.typecho.org/themes/tag-cloud

分类

最新文章

最近回复

  • 青山: 某种原因,暂停友链,抱歉。
  • 青山: 计划搬迁到腾讯云,正...
  • 老徐: 具体要哪个呢?
  • 老徐: 是不是有点老?
  • 青山: 哇,林志炫
  • 老白: 哇,这改的可以,能不...
  • 老徐: 23333
  • 许建华: 我是为了表情包来的~
  • vultr vps: 感谢分享深入学习
  • 青山: 每一次都是不同的感受

归档

标签云

C# .net core asp.net 情感 SQL mongodb sql server EasyUI 安全 激活 linux 身份验证 https typecho .net sql注入 kms MVC IIS 高并发 IE 坑爹 服务器 mysql Oracle Combobox Datagrid 口语 数据抓取

其它