Tag: 文档数据库

使用Mongoose从MongoDB文档中删除一个键

我正在使用Mongoose库来访问具有node.js的MongoDB 有没有办法从文档中删除密钥 ? 即不只是将值设置为空,但删除它? User.findOne({}, function(err, user){ //correctly sets the key to null… but it's still present in the document user.key_to_delete = null; // doesn't seem to have any effect delete user.key_to_delete; user.save(); });

如何在MongoDB中组织多对多的关系

我有两个表/集合; 用户和组。 用户可以是任何数量的组的成员,并且用户也可以是任何数量的组的拥有者。 在关系型数据库中,我可能会有第三个名为UserGroups的表,其中包含一个UserID列,一个GroupID列和一个IsOwner列。 我正在使用MongoDB,我相信在文档数据库中有这种关系的不同方法。 我是否应该将用户表中的组和组作为所有者列表作为两个ObjectID数组embedded? 我是否也应该将成员和所有者列表作为两个数组存储在组表中,从而有效地映射引起关系信息重复的关系? 或者是一个桥梁UserGroups表格合法的概念在文件数据库中的多对多的关系? 谢谢

使用git仓库作为数据库后端

我正在做一个处理结构化文档数据库的项目。 我有一个类别树(〜1000个类别,每个级别最多〜50个类别),每个类别包含数千个(最多约10000个)结构化文档。 每个文档都是几千字节的数据(我更喜欢YAML,但也可能是JSON或XML)。 这个系统的用户执行几种types的操作: 通过ID检索这些文件 通过内部的一些结构化属性来search文档 编辑文档(即添加/删除/重命名/合并); 每个编辑操作都应该logging下来,并附带一些注释 查看logging的特定文档更改的历史logging(包括查看谁更改了文档,何时更改以及为什么更改文档,获取更早的版本 – 如果需要,可能还原为这一版本) 当然,传统的解决scheme是使用某种文档数据库(比如CouchDB或者Mongo)来解决这个问题 – 然而,这个版本控制(历史)的东西引起了我一个疯狂的想法 – 为什么我不应该使用git仓库这个应用程序的数据库后端? 乍一看,可以这样解决: category =目录,document =文件 通过ID获取文档=>更改目录+读取工作副本中的文件 用编辑注释编辑文档=>由各种用户进行提交+存储提交消息 历史=>正常的git日志和旧的交易的检索 search=>这是一个稍微棘手的部分,我想这将需要一个类别定期导出到关系数据库索引的列,我们将允许search 这个解决scheme还有其他常见的缺陷吗? 有没有人试图实现这样的后端(即任何stream行的框架 – RoR,node.js,Django,CakePHP)? 这个解决scheme是否对性能或可靠性有任何可能的影响 – 也就是说,git会比传统的数据库解决scheme慢得多,否则就会有可扩展性/可靠性的缺陷? 我认为,推送/拉对方存储库的这种服务器集群应该相当健壮和可靠。 基本上,告诉我, 如果这个解决scheme将工作, 为什么会或不会做?

基于文档的数据库与关系数据库的优缺点

我一直在试图看看是否可以用基于文档的数据库来完成一些要求,在这种情况下是CouchDB。 两个通用要求: 某些领域具有唯一索引的实体的CRUD 电子商务网站的应用程序,如易趣( 更好的描述在这里 )。 而且我开始认为基于文档的数据库不是解决这些需求的最佳select。 此外,我无法想象用于基于文档的数据库(可能我的想象力太有限)。 当我尝试使用面向文档的数据库来满足这些要求时,你能否向我解释一下我是否从榆树那里问梨 ?