位置: 编程技术 - 正文

MongoDB进阶之动态字段设计详解(mongodb进阶与实战下载)

编辑:rootadmin

推荐整理分享MongoDB进阶之动态字段设计详解(mongodb进阶与实战下载),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mongodb基础知识,mongodb基础知识,mongodb入门教程,mongodb 实战,mongodb 实战,mongodb从入门到商业实战,mongodb 实战,mongodb 实战,内容如对您有帮助,希望把文章链接给更多的朋友!

本文主要介绍的是关于MongoDB动态字段设计的相关资料,分享出来供大家参考学习,需要的朋友们下面来一起看看详细的介绍吧。

适宜读者人群

MongoDB开发者

基础需求

产品: "我们要为现有的表单增加一个伟大的功能, 允许用户增加想要的字段"

技术目标version 1

存储动态表单数据(新增字段无需修改Schema)

首先讲一讲MongoDB支持的索引有哪几种

普通字段索引

内嵌文档索引

数组文档索引

看似上面只有都无法做到动态增加字段的功能

程序员A和程序员S发生如下对话:

程序猿A: "那么我们需要增加另外一个collection来存储动态的内容" 程序猿S: "但MongoDB对关联查询的支持很弱啊, 都没法关联排序, 要是后面产品说要加 排序筛选 的功能我们就懵逼了呀&#;&#; , 唉~ 早知如此就不用MongoDB了"

再重新审视需求

存储动态表单数据 需要支持筛选和排序

技术目标version2

MongoDB进阶之动态字段设计详解(mongodb进阶与实战下载)

增加字段同时还要可以索引

解决方案

使用数组来存储动态字段 增加描述collection用来记录用户的表单配置

存储结构如下:

注意!!! 当用户增加n个字段时, 描述collection同时增加n个文档

如何查询排序筛选呢

上面的例子可以看出, 即使用户未填写该字段值, 但我们依旧需要为它进行存储空值, 以保证我们所有的Document的form下第n个字段均为同一个控件, 这样我们就可以对字段进行筛选排序, 并且可索引

继续深入

产品: "我们需要允许用户增加下拉框和多选框, 同样需要筛选排序"

程序猿: "Fxxx"

那么这样的数据应该如何存储呢&#;

解决方案如下:

我们的value按照1,2,4,8...的二进制方式进行存储

用户选择单选框第一项, 则存1, 第二项则存2, 第三项则存4

用户选择多选框第一项+第三项:则存5, (1+4)

MongoDB为我们提供了强大的Aggregate功能, 其中包含了Bitwise Query Operators 功能, 包含$bitsAllSet ,$bitsAnySet , $bitsAllClear , $bitsAnyClear

以上完成了使用MongoDB动态字段设计的各种需求 &#;

总结

增加配置collection, 用来描述用户的配置 原始值需要存储空值 如需类似下拉框, 多选框时, 使用Bitwise Query Operators 来完成 MongoDB并没有那么弱, 也是可以满足复杂的数据需求的

好了,

标签: mongodb进阶与实战下载

本文链接地址:https://www.jiuchutong.com/biancheng/312643.html 转载请保留说明!

上一篇:mongoDB实现分页的方法(mongodb如何分片)

下一篇:window下mongodb在dos下服务器启动及连接(mongodb win7)

  • 货物退回是什么意思
  • 工会刻章费用计入什么支出
  • 不能收回的应收票据
  • 赞助费账务处理
  • 现金日记账本月合计的红线画法
  • 门票可以直接入账吗
  • 租出非专利技术的摊销额会导致营业利润减少吗
  • 滞纳金海关
  • 哪些财务指标可以用于判断一个企业即将发生财务危机
  • 社保如何会计处理
  • 会计核算原则主要包括
  • 转让不动产增值税纳税义务发生时间
  • 营业收入管理也是企业财务管理的基本内容
  • 个人所得税申报成功,会显示什么?
  • 负债月末正常余额是什么
  • 资源税法律制度PPT免费下载
  • 小规模纳税人转成一般纳税人条件
  • 税务季报都报啥
  • 球场水面办鱼业养殖的税收筹划分析
  • 哪些出口业务不能做
  • 海外代付属于外债吗
  • 园林工程的范围包括哪些?
  • 疫情期间企业应该承担哪些责任
  • 对公账户长期不用怎么收费
  • 超市收代金券如何处理
  • safari浏览器开发者模式
  • 广告法 保险公司承保
  • 政府的扶持资金是否缴税
  • 笔记本如何进行截图
  • 安卓系统详解
  • PHP:pg_transaction_status()的用法_PostgreSQL函数
  • phpmemcached使用
  • 超市内账会计一般每月做什么
  • 委托贷款业务是资产业务吗
  • win11预览版22000.51
  • 管理费用税金怎么算
  • 帝国cms界面
  • 织梦cms要钱吗
  • 现金流量表哪些数据和资产负债表一致
  • mongodb的使用教程
  • 母子公司吸收合并的税收有哪些
  • 专项储备计提和使用理解
  • 加工费计入什么科目制造企业成本
  • 预提成本和冲回成本金额不一致情况说明
  • 房产契税新政策2023
  • 申请个税退税账号是什么
  • 公司给别人公司过账应该注意哪些
  • 应收账款如何做平
  • 金税盘抄报税这是怎么个流程
  • 企业内在
  • 私企银行有哪几家
  • 单独设置停工损失科目
  • sql,join
  • freebsd使用wifi
  • win10下面任务栏
  • linux解析命令
  • Win10 64位正式版系统安装方法全过程图解(U大师)
  • win8系统怎么改win10
  • win8安装界面
  • linux 转换文件编码为utf8编码
  • wmiex.exe是什么程序
  • linux中的mv命令是什么意思
  • perl -pi
  • python自动截图
  • 批处理设置dns
  • unity3d总结
  • unity与android交互详细
  • mongoose模块有什么用途
  • Android之Async-http
  • python设计作品
  • Python中list初始化方法示例
  • jquery 获取父元素的子元素
  • easyui treegrid重新加载
  • python自动翻译小工具
  • asyncio使用
  • 广东省广州市税务局分数线
  • 税务稽查时长
  • 销售皮棉税率为多少
  • 国家税务总局对税务助征员
  • 2020十大经济年度人物揭晓
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设