位置: 编程技术 - 正文

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)

  • 已抵扣进项税额转出怎么申报
  • 预收三年租金 房产税怎么算
  • 附加税税率是多还是少
  • 税收保全措施适用于
  • 公司注销前欠客户钱
  • 商誉减值是在年报还是半年报
  • 取得研发样品收入
  • 异地劳务分包要外经证吗
  • 处置使用过的固定资产,税率按多少
  • 已经交税的收入退款会计分录
  • 环评费用计入管理费用吗 是否需要摊销
  • 土地出让金抵减增值税账务处理
  • 发出商品退回
  • 母公司计提子公司投资收益
  • 利息资本化的时点
  • 机械租赁的发票
  • 进口关税和增值税在哪里交
  • android 设置按钮颜色
  • 环境保护税入账什么会计科目
  • 资产负债表中资产项目的排列顺序是
  • 增值税发票的作用
  • 工资及社保外包服务
  • 企业所得税计税依据
  • 展位费一般多少钱
  • 收到专利补助费的会计处理
  • ghost windows10安装教程
  • 强化税收风险意识
  • fsck是什么文件
  • 按税收的计税依据为标准税收分为
  • 货物发生非正常损失为什么要做j进项转出
  • 审计项目种类
  • 长期借款的
  • 残保金是职工薪酬吗
  • telnet 执行命令
  • 修改Laravel5.3中的路由文件与路径
  • 省外的发票能入账吗
  • vue解决跨域的几种办法
  • 通行费电子发票平台
  • 没进项票
  • 弃置费用摊销例题
  • 季末资产总额怎么计算出来的
  • 小规模纳税人工资薪金怎么申报
  • 企业每月应交哪几种税费
  • 其他债权投资有减值吗
  • 费用类科目期末余额
  • 上个月计提多了,这个月怎么办?
  • 往酒吧送酒怎么样
  • 新会计准则贷款计提贷款减值准备的比例
  • 税务局退回水利基金账务怎么处理
  • 购入无形资产属于资产吗
  • 委托加工的应税消费品是指
  • 销售包装物计入其他应收款吗
  • 营改增后税率表
  • 银行扣的账户管理费属于什么科目
  • 资产负债表负债率怎么计算
  • 固定资产清理账户借方的核算内容包括
  • 对会计人员继续教育的目的包括了保障
  • 固定资产盘点表excel
  • 系统存储过程以什么开头
  • mysql的主从复制模式
  • 苹果手机价格
  • xp电脑启动项怎么设置启动项
  • Windows Server core的便捷操作和远程管理
  • vc6_cn_full.exe
  • win8系统版本
  • win10系统打印机脱机状态怎么恢复正常打印
  • hyper-v搭建
  • mssecsvc是什么进程
  • jquery实现
  • 冰球撞人犯规吗
  • 常用dos命令详解
  • python的threading
  • bat修改ip地址
  • unity3d移动物体
  • js跳出if语句
  • 说几条javascript的基本规范
  • python 解析算法
  • 企业招用退役士兵
  • 成都税务二维码扫描
  • 内蒙古电子税务局登录入口官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设