位置: 编程技术 - 正文

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)

  • 存量房地产转让土地增值税
  • 收入纳税数据是什么意思
  • 税差理论名词解释
  • 医疗垃圾处理费标准2020
  • 缴纳契约计税依据包含增值税吗
  • 技术服务费怎么结转成本
  • 会计报废怎么处理
  • 土地增值税计税依据
  • 违约金收入是否征税
  • 无形资产减值是否可以转回
  • 计算土地增值税时增值税可以扣除吗
  • 工程预收款如何处理
  • 业务分成方案
  • 建筑企业包工包料的税率
  • 费用进项税额转出怎么做账务处理分录
  • 购买电视机产生的费用
  • 企业代开租金专票开什么项目好?
  • 怎么用手撕胶带图解
  • 一般纳税人技术开发税率
  • 邮政通信业
  • 同一控制下合并日后合并报表的编制
  • 新会计准则规定资产如何入账
  • 餐饮个体户税务登记需要什么资料
  • 跨期费用会计处理
  • QuickBooks - QuickBooks是什么进程 有什么用
  • 如何修改系统时间为12/24小时制
  • 对外投资包括哪些投资项目
  • 收到财政厅的补助怎么办
  • 多计提的增值税和附加税怎么冲减?
  • linux怎么操作
  • 如何才能显示效果更好
  • linux系统如何更改主机名
  • 交易性金融资产属于什么科目
  • 企业所得税退税流程
  • php静态页面实现搜索功能
  • 企业借款会计处理
  • 企业会计准则存在的问题怎么写
  • 期末增值税结转账务处理
  • 机器学习中的数学原理——对数似然函数
  • 小规模附加税费
  • 累计折旧在贷方还是借方
  • php数组函数有哪些
  • cat 开源
  • laravel分页
  • 什么是资产评估的价值类型
  • 免征增值税怎么入账
  • mysql列表
  • 社会团体所得税汇算清缴
  • 年金现值系数和年金终值系数的公式
  • 什么是企业年报 汇算 加计
  • 非流动资产基金属于什么科目
  • python中sample函数怎么用
  • json转pojo
  • 公司性质和单位性质的区别
  • 商品流通企业采购费用
  • 专利年费可以计入研发费用加计扣除吗
  • 土地补偿费怎么算
  • 疫情期间减免的六大行业
  • 筹建期间取得的利息收入 企业所得税
  • 先付一部分款发票怎么做
  • 没有销货清单的发票可以报销吗
  • windows如何显示键盘
  • win7怎么打开后缀
  • office2003破解
  • 用win7的人多吗
  • mac双系统怎么调整磁盘空间
  • win8计算机配置在哪
  • 可以自己做手写的软件
  • android游戏开发 教程
  • 如何自动更正
  • javascript数学函数
  • jquery的方法
  • Unable to connect to zookeeper
  • 安卓 旋转屏幕
  • 陕西省国家励志奖学金证书查询入口
  • 对税务稽查工作的意见和建议
  • 税务局绩效奖金多少
  • 简述会计估计及其特点
  • 印花税当期没有发生可以不用申报吗
  • 中国银行手机银行app官方下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设