位置: 编程技术 - 正文

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)

  • 小规模纳税人收入是含税还是不含税
  • 利息收入记借方负数表示增加还是减少
  • 个体户的附加税表怎么填写
  • 什么情况需要预缴增值税
  • 资产负债表月报期末余额怎么填
  • 利润表报错了怎么撤回修改
  • 收入总额的概念
  • 教育费附加可以扣除吗
  • 发放取暖补贴文件
  • 建筑类没收入怎么填
  • 研发场地租赁计什么科目
  • 公司购车购置税怎么交款
  • 发工资时计提个人所得税
  • 一般纳税人进项税额转出会计分录
  • 在外省预交企业所得税
  • 收承兑汇票还要交税吗
  • 附加税增值税免抵税额的数据从哪里提取的
  • 企业汇算清缴弥补以前年度亏损后还需退税
  • 预提租赁费会计处理
  • 加盟费没有发票怎么做账
  • 企业管理可以开什么明细发票
  • 增值税发票系统升级版
  • 筹办期间的筹办费用支出
  • 如何激活windows11专业版?
  • 预付款项属于什么会计要素
  • 年终应交增值税结转怎么算
  • 外贸公司付款方式有几种
  • php session实例
  • 公积金可以支付二手房首付款吗
  • 装修未办理施工许可证怎么处罚
  • mac m1 rosetta编译
  • 资产减值损失会影响利润总额吗
  • php分段
  • 详解Yii2.0 rules验证规则集合
  • 协会会费怎么使用
  • 视觉机械臂操作视频
  • 发票作废申请书模板
  • java中的gui是什么
  • 提取公益金会计怎么做账
  • wordpress部署到github
  • 计算机网络面试八股文
  • 成本类科目怎么记账
  • 长期借款期末余额表示什么
  • 个税代扣代缴手续费返还需要缴纳增值税吗
  • 小卖部铺货首次送货流程
  • 固定资产清理如何做账
  • 小规模不开票怎么做账
  • 固定资产清理是什么账户
  • 咨询费放到什么科目
  • 预提费用汇算清缴前取得发票
  • 产房日常维修费用
  • 母公司为子公司承担税费
  • 进项税额已抵扣又红字冲红税务系统自动冲回吗
  • 跨年度费用如何计算
  • mysql 基本操作
  • centos6.1安装
  • windows vista安装光盘进入dos
  • 在linux操作系统中
  • 在windows中下列叙述正确的有
  • centos7脚本
  • centos6.5安装步骤
  • 深入解析windows第8版
  • 苹果的mac怎么查
  • centos7.4安装
  • windows7的管理在哪里
  • win10周年更新版是什么意思
  • win7小技巧
  • 一边做游戏一边学英语
  • cocos2dx4.0教程
  • Jquery EasyUI Datagrid右键菜单实现方法
  • 链接符怎么删除
  • css应用领域
  • django分层
  • 详细解读了
  • js上传文件到后端
  • javascript中的document
  • 云南新农合网上怎么交
  • 关于房地产企业所得税涉税处理表述正确的有
  • 刷医保的网络可以用外网吗
  • 日本快递税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设