位置: 编程技术 - 正文

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)

  • 个人所得税的账务处理
  • 利率 税率
  • 加计抵扣进项税额政策2022
  • 社保阶段性减免延长到年底
  • 购税盘需要什么东西
  • 发票该如何打印
  • 发票二维码只有一半可以收吗
  • 其他应付款是不是长期负债
  • 差额拨款的事业单位属于预算单位吗
  • 丢失支票补救措施
  • 出口货物的进项发票什么时候认证
  • 搅拌站是自用的账务如何做分录?
  • 认证后的发票可以留存多久
  • 银行直接扣的手续费怎么记账
  • 一般纳税人提供非学历教育可以简易计税吗
  • 定额发票验旧怎么操作
  • 工程部物品领用表格模板
  • 进项税加计抵扣分录
  • 增值税发票和收据的区别
  • 华为手机麦克风在哪里
  • 积极的财政政策有哪些
  • 利率怎么算的计算方
  • 增值税专用发票和普通发票的区别
  • 购车的进项税怎么算
  • 附加税是按照应交增值税还是已交
  • 处理废料的会计分录
  • windowsserver2019安装教程
  • php获取用户名
  • phpcms手册
  • 发散思维的关键
  • 基金管理人业绩报酬分配模式
  • 公司为实习生买保险列支什么科目?
  • Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
  • 小规模企业做账表格
  • thinkphp ide
  • 计入资本公积的金额怎么算
  • 所得税申报资产总额
  • 在php中声明变量时,变量名称以什么符号开头
  • 单位制造费用是什么科目
  • 以前月份多扣社保吗
  • 管理费用明细账余额累加吗
  • System.Data.SQLite 数据库详细介绍
  • 社保所属期怎么填
  • mysql日期和时间类型
  • 固定资产处置时发生的清理费用
  • 劳务成本账务处理
  • 跨年进项发票怎样账务处理
  • 材料盘盈如何入账
  • 红冲发票后如何申报增值税
  • 企业不如实申报个税的风险
  • 附加税减免政策2020年
  • 企业领用产品的会计分录
  • 借款怎么收回来
  • 安全生产费的会计分录
  • 应收账款的余额百分比
  • 公司现金支票取现要缴税吗
  • 原始凭证错误的更正方法
  • mysql密码怎么找回
  • centos6.5中文
  • linux rootkit查杀
  • centos中如何查看ip地址
  • WinXP下载东西总提示找不到文件的原因及解决方法
  • 查看win8.1版本
  • Win10 Mobile 10586.36在Lumia640 XL中的体验 很流畅
  • win10电源选项
  • linux网络设备有哪些
  • win10 ug
  • python djang
  • perl子函数
  • python爬取csdn
  • 脚本合集
  • json jquery
  • python list set dict tuple
  • JavaScript While 循环 教程
  • javascript调用c语言
  • 房产税什么时候开始征收
  • 北京朝阳区国家税务局
  • 庐山坐缆车上去后还要买门票吗?
  • 山东省合格考密码
  • 长途汽车车次号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设