位置: 编程技术 - 正文

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)

  • 海关完税凭证是交给海关么
  • 核定征收企业股权转让的个人所得税
  • 存货是根据总账科目计算填列吗
  • 处置投资性房地产对损益的影响
  • 个税抵扣未及时填报
  • 增值税改革后增值税申报表怎么填写
  • 所得税流程
  • 买车的报税联是什么作用
  • 房产企业因资金问题退市
  • 工会捐款规定
  • 房地产公司工程管理制度
  • 去年漏记一笔银行付款怎么办
  • 购入但未开始使用的房产
  • 电费发票勾选是啥意思
  • 职工福利费税前扣除标准最新
  • 报增值税怎么取消校验
  • 店面转让出去收到的钱如何做账?
  • 盘盈对应的入账科目
  • 自制销售清单可以公开吗
  • 不开票的收入怎么办
  • 文化公司发展战略
  • 退回多扣的社保费给员工,怎样做会计分录?
  • iis搭建php环境
  • 建筑公司收到工程款需要交哪些税
  • object转map工具类
  • redis网络模型 框架图
  • php设计模式六大原则
  • 退回银行本票会计分录
  • thinkphp3.1.3手册
  • php类型转换的两种方法
  • 雪花 (© TothGaborGyula/Getty Images Plus)
  • yolov1 实现
  • deformable detr代码
  • window.eval方法
  • php曲线图模板
  • extrim命令详解
  • 报关单在哪里打出来
  • 查补收入是否享受免税政策
  • 发票备注栏填写样板
  • dedecms怎么改图片
  • jsp连接数据库的步骤
  • mongodb查询工具
  • 办公室购买电脑计入
  • 结转成本计入
  • 职工教育经费和职工福利费扣除比例
  • 非税收入统一票据怎么查询
  • 公司什么项目
  • 增加固定资产原值
  • 工程预付款是否含规费和税金
  • 关于幼儿园的会议内容
  • 公司注销留抵税额怎么做进项转出
  • 车费属于什么会计科目类
  • 医疗器械销售能一年挣一百万么
  • 企业会计准则第4号固定资产
  • sql server错误代码1608
  • centos7.9
  • mysql数据库随机取数据
  • innodb底层实现原理
  • ubuntu gz
  • windowsxp的快捷键
  • 如何修改windows注册表
  • ubuntu20.04怎么用
  • ubuntu20.04忘记用户密码怎么办
  • 无法打开vmx86
  • xp快捷桌面图标
  • vrvedp_m.exe是什么进程
  • win7老是自动开机启动是怎么回事啊
  • CentOS 6.x 到 CentOS 7 的升级过程
  • linux服务器的mac地址怎么查
  • linux如何配置双网卡
  • 怎么激活win7旗舰版系统
  • win8怎么设置时间自动更新
  • 跑跑3s是谁
  • 3d网络游戏开发方法
  • Android游戏开发案例教程小小弹球
  • AnalogClock
  • 严苛认证
  • 什么叫党员双报到
  • 税务稽查的后果
  • 专用发票收款人可以盖私章吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设