我需要帮助在mongo中建模我的数据.我的大部分经验都是在relational DBs,我刚刚开始与mongo合作.我正在为不同的事件建模数据.

  1. 具有的每个"事件"都有相同的字段.
  2. 每个"事件"将有数以亿计到数百万的文档/行
  3. 活动是动态的,即根据需要创建新的活动.即

可能最重要的是,在处理事件(CRUD操作)时,用户必须指定事件名称.

到目前为止,我可以看到几种方法来实现这一点,我不想在以"错误"的方式设置数据模型时犯重大错误.

1) 一个包含所有事件数据的"事件"集合."事件"名称上的索引.查询将类似于:

db.events.find({event: 'Summer Olympics 2012');
{event: 'Summer Olympics 2012', attributes: [{name: 'joe smith', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'jane doe', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'john avery', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'ted williams', .... }

db.events.find({event: 'Summer Olympics 2013'})
{event: 'Summer Olympics 2013', attributes: [{name: 'steve smith', .... }
{event: 'Summer Olympics 2013', attributes: [{name: 'amy jones', .... }

2) 每个新事件的集合,以及所有事件名称的集合.由于每个事件存储在不同的集合中,因此不需要对事件名称进行索引.

// multiple collections, create new as needed
db.summer2012.find() // get summer 2012 docs

db.summer2016.find() // get summer 2016 docs

//'events' collection
db.events.find() // get all events that I would have collections for
{name: 'summer2012', title: 'Summer Olympics 2012'};
{name: 'summer2016', title: 'Summer Olympics 2016'};

对于#1,我有点担心,一旦我达到100个事件,每个事件都有数百万条记录,即使其中一个事件只有500个文档,每个"事件"的查找速度也会很慢.

对于#2,我是不是每次都会创建一个新的系列,并举办一场活动,以此来"绕过"mongo模型?

任何 comments / idea 都是受欢迎的,因为我真的不知道哪一个最终会表现得更好,或者哪一个会给我带来更多麻烦.我环顾了四周(包括mongo的网站),真的找不到具体的答案.

推荐答案

来自mongo docs:data modeling

在某些情况下,您可能会 Select 将信息存储在

考虑存储日志(log)文档的示例集合日志(log).

{log:"dev",ts:…,info:…}{log:"debug",ts:…,info:…}

如果文档总数较低,可以将文档分组

一般来说,拥有大量藏品并没有什么意义

也和10gen guy交谈过.对于真正大的Collection ,他列出了将其分成更小更具体的Collection 的多个好处.他对所有数据使用一个集合并使用索引的 comments 是:

仅仅因为你能做某事并不意味着你应该做.模型

Mongodb相关问答推荐

通过mongoDB中的查找从管道中删除被阻止的用户

使用特定关键字和邻近度进行查询和过滤

发布到 MongoDB 时生成的附加id字段

Mongo 聚合将 $sort 与 $geoNear 结合使用

DB 中的引用对象在 GraphQL 查询中返回 null

MongoDB聚合多条件

使用 Flask-pymongo 扩展通过 _id 在 MongoDB 中搜索文档

什么是 Mongoose (Nodejs) 复数规则?

MongoDB插入引发重复键错误

将数据插入 MongoDB - 没有错误,没有插入

NodeJS中的密码重置

在 Nodejs 中配置最大旧空间大小

无法从 javascript 打印 BSON 对象

如何解决 ClassNotFoundException:com.mongodb.connection.BufferProvider?

mongo - 如何查询嵌套的 json

是否有支持 MongoDB 和 Devise 的 Rails 管理界面?

如何从 Mongoose 模型对象中获取集合名称

RoboMongo:不显示所有文档

Mongoid 不在查询中

findOneAndUpdate 中的文档未更新