位置: 编程技术 - 正文
推荐整理分享MongoDB进阶之动态字段设计详解(mongodb进阶与实战下载),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:mongodb基础知识,mongodb基础知识,mongodb入门教程,mongodb 实战,mongodb 实战,mongodb从入门到商业实战,mongodb 实战,mongodb 实战,内容如对您有帮助,希望把文章链接给更多的朋友!
本文主要介绍的是关于MongoDB动态字段设计的相关资料,分享出来供大家参考学习,需要的朋友们下面来一起看看详细的介绍吧。
适宜读者人群
MongoDB开发者基础需求
产品: "我们要为现有的表单增加一个伟大的功能, 允许用户增加想要的字段"
技术目标version 1
存储动态表单数据(新增字段无需修改Schema)
首先讲一讲MongoDB支持的索引有哪几种
普通字段索引
内嵌文档索引
数组文档索引
看似上面只有都无法做到动态增加字段的功能
程序员A和程序员S发生如下对话:
程序猿A: "那么我们需要增加另外一个collection来存储动态的内容" 程序猿S: "但MongoDB对关联查询的支持很弱啊, 都没法关联排序, 要是后面产品说要加 排序筛选 的功能我们就懵逼了呀 , 唉~ 早知如此就不用MongoDB了"再重新审视需求
存储动态表单数据 需要支持筛选和排序技术目标version2
增加字段同时还要可以索引
解决方案
使用数组来存储动态字段 增加描述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 转载请保留说明!友情链接: 武汉网站建设