还是一如既往先把结构图放出来,上上个版本添加了redis的缓存,但是不满足我的需求,因为公司有项目要求是分布式所以呢,这里我就增加了mongoDb进行缓存分布式,好了先看结构图(1)。

总的来说比较蛋疼,因为从来没有使用过mongoDB,从安装,到转为windows服务,设置权限等等,好吧这都是题外话。

在写这个MongoDB版本的时候遇到的一些问题,我先总结下:

1.MongoDb版本是官网最新版3.4.4,官方驱动为2.4.3,首先我的项目是以GUID做为主键,在往MongonDB中插入时遇到的是将GUID生成了MongoDB的LUUID格式产生了这样的格式(2)并且和我的数据库不同(3)当然redis也不同(4)。

a)带着问题我们去解决查了文档发现原来因为bson的键要标识成GUID,并且格式要转为string,既然知道问题了就去解决找到我的GUID主键,如下图(5):

在主键上加上 [BsonId(IdGenerator = typeof(GuidGenerator)), BsonRepresentation(BsonType.String)]这段就可以了,看了下效果确实可以了(6)。

2.但是在测试过程中查询的时候却找不到,一查原来我的数据库redis的id值都不一样,这又是怎么回事?

b)原来mongoDB生成的GUID和C#生成的GUID的进制是不一样的,为了解决这个问题,Google了一下,找到了一个脚本,把这个js脚本放在mongoDB里面执行一下,然后生成的GUID就和数据库的一样了。如图(7):

然后生成的_id就和我数据redis的一样了。(8)(9)

解决完成这些问题后开始写自己的封装类。

希望大家多给出建议,博主也是第一次玩mongoDB,如果有好的学习资源也请推荐给博主。

第一步创建连接:

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训 View Code

第二步创建DB:

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训 View Code

然后呢献上自己的封装helper:

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训 

网友评论