位置: 编程技术 - 正文

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)

  • 城镇土地使用税的计算公式
  • 金蝶软件中怎么增加固定资产
  • 财政应返还额度与财政拨款收入的关系
  • 个体户交了增值税又开负数发票怎么退税
  • 计提固定资产折旧,车间使用的固定资产折旧1400
  • 在企业所得税中增值税可以扣除吗
  • 员工买了多项东西怎么说
  • 小企业会计准则2023电子版
  • 销项负数发票与红字发票
  • 承租人转租需要交税吗
  • 其他货币资金的概念
  • 不开票收入怎么报税
  • 4s店付款
  • 一般纳税人十万以下免教育费附加
  • 金税盘的用户名
  • 待摊费用在资产负债表中怎么填
  • 股权激励取消怎么处理?
  • 非金融企业之间的借款合同要交印花税吗
  • 长期借款和短期借款时间
  • 个人之间股权转让印花税怎么交
  • php数组函数题目
  • 支付给代理机构的手续费计入
  • 将银行借款存入银行会引起企业资产总额的变化吗
  • PHP:pcntl_signal_dispatch()的用法_PCNTL函数
  • 固定资产计算折旧时用扣除减值吗
  • 制造费用账户在期末被结平
  • svc语法
  • 固定资产闲置能报废吗
  • 前端生成docx
  • 微信小程序开发公司
  • autoreconf -ivf
  • packet命令
  • 存货降价销售的会计分录
  • 进项税发票可以跨年认证吗
  • 游戏公司的主营业务是什么
  • 多缴纳的社保怎么查询
  • 收回款项的会计处理分录
  • 外贸企业账务处理方法
  • 项目资金支付
  • HTTP/1.1 XCache header field
  • 外经证是啥样
  • sql server 2008怎么用
  • 预收工程款的会计分录
  • 资源税计税依据是开采量还是销售量
  • 固定资产报废时,后续未折旧额计入哪里
  • 丢失增值税专用发票的征管政策
  • 物流费属于什么会计科目
  • 注销退税后又补税了
  • 进口业务关税的计算方法
  • 支票存根联可以涂改吗
  • 跨年度发票作废已交税怎么办
  • 研发支出怎么结转到管理费用
  • 小规模纳税人免税政策2023年
  • 企业软件开发哪家好
  • 建筑业营改增后税务问题
  • 未分配利润转增股本要交税吗怎么交
  • 未认证的进项税额转出怎么做分录
  • mysql索引优化是什么意思
  • sqlserver代理无法启动怎样办
  • mysql5.7重装
  • mysql连接查询和子查询效率
  • 三星电脑安装系统为什么进入不了安装页面
  • 如何彻底关闭mac电脑app
  • windows10x预览版
  • 苹果电脑使用u盾怎么用
  • 在centos7中,一般用( )命令来查看网络接口的状态
  • fstab文件详解修改
  • linux小技巧
  • js声明数据类型
  • appiumforwindows的简单安装和启动(安卓)
  • 安卓属性
  • android view详解
  • android加载gif图片
  • shell脚本逐条执行
  • 创建shell脚本命令
  • jquery操作表单
  • javascript身份证号验证
  • 税务局国际税收亮点工作总结
  • 广西税务局发票查验平台
  • 商品房开超市
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设