位置: 编程技术 - 正文

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)

  • 无票收入小规模怎么报增值税
  • 待认证进项税账务处理
  • 六税一费优惠政策
  • 普通发票领多了会怎么样
  • 公司有残疾人如何进行增值税减免备案
  • 附加税预缴分录
  • 发票抬头公司名称有空格
  • 个人抬头发票可以抵税个人所得税吗
  • 旅游业全额开票可以差额征税吗
  • 公户转到老板私人账户
  • 住宿费专票可以报销吗
  • 费用怎么暂估
  • 餐饮招待怎么入账
  • 附加税的计提基数怎么算
  • 办税员身份怎么办理
  • 季度报税每个月还用计提吗
  • 哪些行为触犯了刑法
  • 新办企业的开办费用应计入( )
  • 公司对公账户每年费用
  • 去年红字发票怎么做账
  • 股东可以以知识产权作价出资吗
  • 房产交易差价
  • 个体工商户与其经营者构成共同侵权吗
  • win10通知栏怎么设置
  • php数组函数面试题
  • php判断查询是否有结果
  • php数字转换大写
  • linux操作系统为用户提供的接口为
  • php查看变量数据类型
  • 捐赠支出算期间费用吗
  • 最贵的安卓应用软件
  • framework怎么用
  • 只有收据没有发票怎么报销
  • 会计开税票的表格范本
  • vuedraggable官方文档
  • 黑色金属冶炼压延品的税收编码是多少
  • yolov5的使用
  • php的运算符主要包括哪些?
  • ps一个页面怎么选中画板
  • 企业会计准则季报利润表本期金额怎么填
  • 税务法是否允许私人经营
  • mysql索引原理及慢查询优化
  • 非营利组织缴纳增值税账务处理
  • 法人如何提取公积金
  • 应收账款可以挂存货吗
  • 营业外支出的内容包括
  • 留底税额怎么形成的
  • 知识产权fa
  • 生产过程中产品质量问题
  • 一次性伤残补助金是单位给的还是社保给的
  • 以前年度发票退回了不重开怎么处理
  • 进货没有发票怎么做账
  • 企业单位为职工发放哪些福利
  • 如何取消已经生产的产品
  • 弥补亏损的会计处理
  • 会计科目的设置原则包括( )
  • 实收资本的主要用途
  • 消防安装公司属于什么行业
  • 跨国企业在国外设立工厂的战略地位
  • 局域网 下载
  • mac怎么用bootcamp
  • 苹果mac系统关机怎么关
  • 什么是边角料
  • Extjs中使用extend(js继承) 的代码
  • node.js的使用
  • 为什么调用不了函数
  • jquery根据name获取对象数组
  • unity编辑工具软件介绍
  • 狗刨好学吗
  • bootstrap与Jquery UI 按钮样式冲突的解决办法
  • jQuery+formdata实现上传进度特效遇到的问题
  • js初级教程
  • jquery网页设计作业
  • android设计模式面试题
  • 个人所得税预扣预缴办法
  • 深圳如何打印个人征信
  • 房地产公司可以查到客户购房信息
  • 2020年民主生活会主题是什么?
  • 杨柳青还迁房2024年还建不建
  • 广东省东莞市电子税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设