Adhesive框架系列文章--Mongodb数据服务使用实践

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 在此文中,我们会实践一下,如何使用Mongodb数据服务存储新的自定义数据。之前我们说过了,使用Mongodb数据服务只有4步这么简单: 1)定义实体 2)定义元数据 3)配置Mongodb数据服务 4)调用API插入数据 在这里,我们希望使用Mongodb存放书籍借阅的信息: p...

在此文中,我们会实践一下,如何使用Mongodb数据服务存储新的自定义数据。之前我们说过了,使用Mongodb数据服务只有4步这么简单:

1)定义实体

2)定义元数据

3)配置Mongodb数据服务

4)调用API插入数据

在这里,我们希望使用Mongodb存放书籍借阅的信息:

   public enum Status
    {
        借出 = 1,
        归还 = 2,
        丢失 = 3,
    }

    [MongodbPersistenceEntity("Test", DisplayName = "书籍借阅信息", Name = "Book")]
    public class Book
    {
        [MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.AscendingAndUnique, IsPrimaryKey = true)]
        [MongodbPresentationItem(ShowInTableView = true, DisplayName = "主键")]
        public string ID { get; set; }

        [MongodbPersistenceItem(IsTableName = true)]
        [MongodbPresentationItem(DisplayName = "部门", ShowInTableView = true)]
        public string DeptName { get; set; }

        [MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Descending, IsTimeColumn = true, ColumnName = "T")]
        [MongodbPresentationItem(MongodbSortOption = MongodbSortOption.Descending, DisplayName = "时间", ShowInTableView = true)]
        public DateTime ServerTime { get; set; }

        [MongodbPresentationItem(DisplayName = "书名", ShowInTableView = true)]
        public string Name { get; set; }

        [MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Ascending)]
        [MongodbPresentationItem(DisplayName = "借书者",  ShowInTableView = true, MongodbFilterOption = MongodbFilterOption.TextBoxFilter)]
        public string UserName { get; set; }

        [MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Ascending)]
        [MongodbPresentationItem(DisplayName = "状态变化", ShowInTableView = true, MongodbFilterOption = MongodbFilterOption.DropDownListFilter)]
        public Status Status { get; set; }

        [MongodbPersistenceItem(MongodbIndexOption = MongodbIndexOption.Ascending)]
        [MongodbPresentationItem(DisplayName = "书籍分类", ShowInTableView = true, MongodbFilterOption = MongodbFilterOption.CheckBoxListFilter)]
        public string Category { get; set; }

        [MongodbPresentationItem(DisplayName = "备注")]
        public string Memo { get; set; }
    }

其中包含:

1)主键ID,显示在表格视图中,做唯一索引

2)部门名,显示在表格视图中,作为表名

3)书名,显示在表格视图中

4)时间,显示在表格视图中,倒序排列,倒序索引

5)借书者,显示在表格视图中,可以通过文本框进行搜索,索引

6)状态变化,显示在表格视图中,这是一个枚举,可以通过下拉列表进行搜索,索引

7)书籍分类,显示在表格视图中,可以通过复选框进行搜索,索引

8)备注,不显示在表格视图中

并且,我们把这个实体存放在名为Test的分类中,数据库名也就是为Test__Book__年月(分库)。

 

在定义了数据之后只需调用API插入数据即可:

var book = new Book()
                {
                    DeptName = DeptName.SelectedValue,
                    ID = Guid.NewGuid().ToString(),
                    Memo = Memo.Text,
                    UserName = UserName.Text,
                    ServerTime = DateTime.Now,
                    Name = BookName.Text,
                    Status = (Status)Enum.Parse(typeof(Status), Status.SelectedValue),
                    Category = BookCategory.Text
                };
                MongodbService.MongodbInsertService.Insert(book);

前台:

部门
        <asp:DropDownList ID="DeptName" runat="server">
            <asp:ListItem>Tech</asp:ListItem>
            <asp:ListItem>Sales</asp:ListItem>
            <asp:ListItem>Market</asp:ListItem>
        </asp:DropDownList>
        &nbsp;状态
        <asp:DropDownList ID="Status" runat="server">
            <asp:ListItem>借出</asp:ListItem>
            <asp:ListItem>归还</asp:ListItem>
            <asp:ListItem>丢失</asp:ListItem>
        </asp:DropDownList>
        &nbsp;分类
        <asp:TextBox ID="BookCategory" runat="server">技术书</asp:TextBox>
        &nbsp;书名
        <asp:TextBox ID="BookName" runat="server">《乔布斯传》</asp:TextBox>
        &nbsp;借书者
        <asp:TextBox ID="UserName" runat="server">朱晔</asp:TextBox>
        &nbsp;备注
        <asp:TextBox ID="Memo" runat="server">是一本好书</asp:TextBox>

 

之前我们说过,为了安全考虑,如果要把数据提交到Mongodb数据服务中,必须在配置服务中进行配置,把类型注册进去,打开配置后台:

image

进入全局配置中的Mongodb服务配置(也就是客户端配置),进入配置项列表,增加一项:

image

名字填写类型的完整名,比如Adhesive.Test.WebApp.Book,然后修改类型完整名也为Adhesive.Test.WebApp.Book:

image

这就完成了客户端的配置,同样对于服务端,进入Mongodb服务端配置节点,再进入服务配置列表

image

增加一项,命名为Adhesive.Test.WebApp.Book,然后修改类型完整名也为Adhesive.Test.WebApp.Book:

image

这里大部分配置和客户端配置差不多,可以从“是否提交到数据库”这个配置看出这是服务端的配置。并且可以看到,服务端使用8个线程来提交数据,而客户端只有一个线程。

至此,我们就可以打开前台提交数据了:

image

插入一些数据后到后台查看:

image

点击进入列表视图:

image

我们插入了三条记录,由于我们在列上定义过搜索的规则,我们可以打开高级数据筛选:

image

比如,我们只查看状态变化是借出的记录:

image

我们再添加几条记录,借书者其它名字:

image

来尝试搜索一下陈锋借出书籍的记录:

image

image

结果正式我们需要的!

 

当然,分组统计和数据量统计功能也同样可用:

 

image

image

数据想怎么看就怎么看!

 

不需要考虑数据提交时的异步队列、不需要考虑数据的索引、不需要考虑数据的分表分库、不需要考虑数据呈现后台、不需要考虑实现配置,只需要写自己的业务逻辑代码,一切交给Mongodb数据服务。其实Mongodb数据服务主要用来存对内的非业务逻辑的日志、统计和状态数据,因为通用的数据后台完全可以满足我们的需求。在下一篇文章中,我们会介绍如何针对新的数据进行报警的配置。

作者: lovecindywang
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
打赏
0
0
0
0
4
分享
相关文章
微服务——MongoDB实战演练——文章评论的基本增删改查
本节介绍了文章评论的基本增删改查功能实现。首先,在`cn.itcast.article.dao`包下创建数据访问接口`CommentRepository`,继承`MongoRepository`以支持MongoDB操作。接着,在`cn.itcast.article.service`包下创建业务逻辑类`CommentService`,通过注入`CommentRepository`实现保存、更新、删除及查询评论的功能。最后,新建Junit测试类`CommentServiceTest`,对保存和查询功能进行测试,并展示测试结果截图,验证功能的正确性。
27 2
|
12天前
|
微服务——MongoDB实战演练——文章评论实体类的编写
本节主要介绍文章评论实体类的编写,创建了包`cn.itcast.article.po`用于存放实体类。具体实现中,`Comment`类通过`@Document`注解映射到MongoDB的`comment`集合,包含主键、内容、发布时间、用户ID、昵称等属性,并通过`@Indexed`和`@CompoundIndex`注解添加单字段及复合索引,以提升查询效率。同时提供了Mongo命令示例,便于理解和操作。
25 2
微服务——MongoDB实战演练——根据上级ID查询文章评论的分页列表
本节介绍如何根据上级ID查询文章评论的分页列表,主要包括以下内容:(1)在CommentRepository中新增`findByParentid`方法,用于按父ID查询子评论分页列表;(2)在CommentService中新增`findCommentListPageByParentid`方法,封装分页逻辑;(3)提供JUnit测试用例,验证功能正确性;(4)使用Compass插入测试数据并执行测试,展示查询结果。通过这些步骤,实现对评论的高效分页查询。
22 0
微服务——MongoDB实战演练——文章微服务模块搭建
本节介绍文章微服务模块的搭建过程,主要包括以下步骤:(1)创建项目工程 *article*,并在 *pom.xml* 中引入依赖;(2)配置 *application.yml* 文件;(3)创建启动类 *cn.itcast.article.ArticleApplication*;(4)启动项目,确保控制台无错误提示。通过以上步骤,完成文章微服务模块的基础构建与验证。
21 0
【赵渝强老师】MongoDB写入数据的过程
在MongoDB数据更新时,WiredTiger存储引擎通过预写日志(Journal)机制先将更新写入日志文件,再通过检查点操作将日志中的操作刷新到数据文件,确保数据持久化和一致性。检查点定期创建,缩短恢复时间,并保证异常终止后可从上一个有效检查点恢复数据。视频讲解及图示详细说明了这一过程。
110 23
【赵渝强老师】MongoDB写入数据的过程
使用 docker 快速搭建开发环境的 mongodb 服务
本指南介绍如何使用 Docker 和 Docker Compose 部署 MongoDB 和 Mongo Express。首先,通过 Docker 命令分别启动 MongoDB(镜像 `mongo:7.0.14`)和 Mongo Express(镜像 `mongo-express:1.0.2-20-alpine3.19`),并配置环境变量确保两者能正确连接。接着,提供了一个 `docker-compose.yaml` 文件示例,包含 MongoDB 数据卷、健康检查及服务依赖配置,简化多容器管理。
187 1
|
12天前
|
微服务——MongoDB的数据模型
MongoDB采用文档(document)作为最小存储单位,类似关系型数据库中的行,使用BSON(Binary-JSON)格式存储数据。BSON是JSON的二进制扩展,支持内嵌文档和数组,新增了如Date、BinData等特殊数据类型,具有轻量、高效、可遍历的特点,适合非结构化与结构化数据存储。其灵活性高,但空间利用率略低。BSON数据类型包括string、integer、boolean等基本类型及date、object id等扩展类型。
23 0
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等