位置: 编程技术 - 正文

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)

  • 增值税什么时候计入成本
  • 代扣个人借款分录
  • 工资个人所得税标准表
  • 公司注册资本认缴
  • 企业所得税汇算清缴操作流程
  • 培训属于什么服务行业
  • 用餐补贴算在工资里面吗
  • 财务费用属于什么科目借贷方向
  • 主营业务成本包括职工薪酬吗
  • 购买生产原料分录
  • 一般纳税人小微企业印花税优惠政策
  • 银行贴现差额部分计入什么科目?
  • 企业给员工发放最低生活保障
  • 计划成本法下会计分录
  • 亏损企业交税
  • 五分钟了解外出经营活动税收管理证明
  • 201金8税盘抵扣期限是多久?
  • 银行承兑贴息率是年利率吗
  • 报税没有印花税怎么处理
  • 小规模季度划分
  • 未按规定期限办理身份证
  • 支票遗失要怎么补办
  • 凭证出现错误如何解决
  • 资金印花税
  • 支付工程款不得超60天
  • 向其他股东购买股权
  • 关于积分的三种账务处理方法
  • w10系统怎么连接
  • 在Win7系统中,文件的属性包括
  • 手机word文档怎么加照片
  • win10平板模式怎么显示桌面
  • 苹果a1530是什么
  • 二手房房屋买卖注意哪些问题
  • 生产企业出口退税全部流程
  • 广告宣传费的税收筹划
  • 钢琴块小游戏在线玩
  • vue内置指令实验总结
  • ai形成生成器工具怎么用
  • 跨月的专用发票可以重新开吗
  • 可变现净值高于成本是什么意思
  • 开票系统软件升级
  • dedecms官网
  • 公司的投资利税是什么
  • python struct库
  • SQL Server 2008 R2占用cpu、内存越来越大的两种解决方法
  • server更改密码
  • 预付款已经开了发票要怎么做账
  • 销售收入与营业费用的配比不合理
  • 个体户没有税务登记怎么开发票
  • 劳务费怎么做会计科目
  • 合并资产负债表少数股东权益怎么计算
  • 公司分期付款买车怎么抵税
  • 给员工租的房子水电费谁出
  • 商贸企业固定资产可以一次性扣除吗?
  • 会计准则应收账款计提坏账
  • 原材料科目怎么设置
  • 资金账簿印花税税率
  • mysql unique option prefix myisam_recover instead of myisam-recover-options的解决方法
  • windows7/vista/server(no slic)
  • 怎么看mac的硬盘型号
  • solaris 修改用户 主目录
  • winxp如何设置自动关机
  • w10 2021年更新
  • cocos2d游戏源码
  • android sdk platform要安装吗
  • shell脚本case语句判断成绩
  • perl 运算
  • 用unity做2d游戏
  • jquery设置滚动条
  • 自动监测和在线监测一样吗
  • android 像素
  • 详解node HTTP请求客户端 - Request
  • python遍历列表判断相同元素
  • python下载方法
  • 辽宁省社保系统操作
  • 湖南省国家电子税务局官网
  • 个税完税证明在哪里开具
  • 江苏省常州市国事业单位国企招录测绘工程研究生公告
  • 国税注销需要什么资料
  • 税控发票开票软件金税盘版发票未报送什么情况?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设