位置: 编程技术 - 正文

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)

  • 税金及附加怎么记忆
  • 发票上有字迹可以拿去作废吗
  • 账面现金可以转出吗
  • 年末增值税结转账务处理流程
  • 建筑业异地预缴税款怎么抵扣
  • 收到认缴实收资本怎么做账务处理?
  • 突然收到银联入账收入怎么办
  • 开票金额和实际金额不一致
  • 个人股权转让申报表
  • 中方人员取得的工资、薪金所得,征收个人所得税有特别规定吗?
  • 小微企业声明函怎么开
  • 企业合作开发的研发费怎样加计扣除?
  • 小规模纳税人一个月能开多少税票
  • 网上申报附加税怎么报
  • 已经折旧完的固定资产怎么处理
  • 企业增值税如何退税
  • 制造费用明细科目有哪些
  • 欠税不交的后果 个人
  • php7多线程
  • 购入固定资产的借款利息支出
  • uniapp监听网络状态
  • 萨勒克国家公园课文
  • 已抵扣增值税进什么科目
  • 商业汇票抵付前欠货款的分录
  • 被白雪覆盖的彩虹歌词
  • php cat
  • pytorch1.5
  • umount -l命令
  • 明星身价几十亿
  • 用友财务软件怎么下载到电脑
  • 国外公司给国内个人汇款
  • python多进程间通信
  • 技术转移转化是干什么的
  • 一般纳税人申报表电子版
  • 税务查账后如何结转
  • sql查询结果分页
  • linux系统中mysql数据库的导入和导出
  • 应发工资账务处理
  • 去税务局开增值税专用发票流程
  • 资产评估机构可以评估土地吗
  • 公司对员工的罚款用途
  • 每个月计提工资没有发怎么办
  • mysql中具体到删某一个数据
  • mysql数据类型decimal
  • mysql转移表数据表
  • 安装好sql2000后安装sp4
  • linux上mysql安装详细教程
  • xp无法识别的usb设备 怎么解决
  • mac上怎么用ppt
  • 如何解决windows无法连接到打印机
  • win8怎么关闭系统更新
  • win8怎么添加打印机到电脑上
  • windows10bug严重
  • spmgr.exe - spmgr是什么进程 有什么用
  • windowxp怎么取消开机密码
  • nalntsrv.exe - nalntsrv是什么进程 有什么用
  • win7系统禁止更新
  • 免费升级windows10
  • 微软何时推出win10
  • 查看rpm包含的内容
  • opengl环境光
  • ExtJS 2.0实用简明教程 之获得ExtJS
  • jQuery实现彩带延伸效果的网页加载条loading动画
  • opengl transform
  • 家字取名男孩名字
  • 利用python读取文件
  • NGUI之UIScrollView对齐
  • Ext JS 4官方文档之三 -- 类体系概述与实践
  • unity获取物体的位置
  • jquery formatter
  • activity跳转闪退
  • flex开发工具
  • android强制关机
  • 黄南同仁县海拔多少米
  • 现在开票可以不去税务局吗
  • 广东省电子税务局登录方式
  • 基层税收工作的建议意见
  • 个人所得税需要计提吗?
  • 2021年水资源税征期
  • 纳税明细怎么查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设