在 MongoDB 中存储 Analytics 数据有哪些好方法?

发布于 2024-09-19 13:46:30 字数 716 浏览 5 评论 0原文

使用 MongoDB 存储 Analytics 数据以供将来分析有哪些好方法?我正在考虑做类似的事情:

> db.analytics.insert( { page: 'product', id: 123, date: new Date('Sept 8, 2010'),
                       pageviews: 222, timeOnPage: 5432 } )

> db.analytics.find()
{ "_id" : ObjectId("4c8e04b1f14d4366465197b8"), "page" : "product", "id" : 123, 
  "date" : "Wed Sep 08 2010 00:00:00 GMT-0700 (PDT)", "pageviews" : 222, 
  "timeOnPage" : 5432 }

这是非常相关的。 pageviews 和 timeOnPage 可以集中在一起,

> db.analytics.insert({page: 'product', id: 123, date: new Date('Sept 8, 2010'),
                       data: { pageviews: 222, timeOnPage: 5432 } })

但如果使用 Mongoid(Rails 对象关系映射器),那么拥有额外的模型会更加复杂。

What are some good ways to store Analytics data using MongoDB for future analysis? I am thinking of doing something like:

> db.analytics.insert( { page: 'product', id: 123, date: new Date('Sept 8, 2010'),
                       pageviews: 222, timeOnPage: 5432 } )

> db.analytics.find()
{ "_id" : ObjectId("4c8e04b1f14d4366465197b8"), "page" : "product", "id" : 123, 
  "date" : "Wed Sep 08 2010 00:00:00 GMT-0700 (PDT)", "pageviews" : 222, 
  "timeOnPage" : 5432 }

which is quite relational. pageviews and timeOnPage can be lumped into

> db.analytics.insert({page: 'product', id: 123, date: new Date('Sept 8, 2010'),
                       data: { pageviews: 222, timeOnPage: 5432 } })

although if using Mongoid (a Rails Object Relation Mapper), then there is more complication for having an additional model.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

耳钉梦 2024-09-26 13:47:06

您可能想看看在计数器上使用 upserts 和 $inc 运算符。如果综合浏览量增加,您可以使用类似的内容(选择器、运算符、upsert 设置为 true)。

update( { page: 'product', id: 123, data: { pageviews: 222}) }, 
        { $inc : {  pageviews: 1} }, 
        { upsert : true } )

如果该记录不存在文档,它将创建一个文档,如果存在,它将增加综合浏览量。

这实际上完全取决于数据的形成方式。

这篇博文解释了更多信息。

You may want to look at using upserts and the $inc operator on counters. If pageviews increments you can use something like this (selector, operator, upsert set to true)

update( { page: 'product', id: 123, data: { pageviews: 222}) }, 
        { $inc : {  pageviews: 1} }, 
        { upsert : true } )

If no document exists for this record it will create one, if one exists it will increment the pageviews.

It really all depends on how your data is shaped.

This blog post explains more.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文