【发布时间】:2015-11-04 23:45:26
【问题描述】:
我将 Node.js 和 MongoDB 与 Monk.js 一起使用,我希望以每小时一个文档的最小方式进行日志记录,例如:
最终文档:
{时间:YYYY-MM-DD-HH,日志:[{action:action1,count:1},{action:action2,count:27},{action:action3,count:5}]}
应该通过增加一个值来创建完整的文档。
例如,有人在这个小时首先访问了一个网页,并且 action1 的增量应该创建以下带有查询的文档:
{时间:YYYY-MM-DD-HH,日志:[{action:action1,count:1}]}
这个小时内的其他用户访问了其他网页并且文档应该被扩展至:
{时间:YYYY-MM-DD-HH,日志:[{action:action1,count:1},{action:action2,count:1}]}
并且在访问不同的网页时计数值应该增加。
目前我为每个动作创建一个文档:
tracking.update({ 时间:moment().format('YYYY-MM-DD_HH'), 行动:行动, 信息:信息 }, { $inc: {count: 1} }, { upsert: true }, 函数(错误){}
mongodb 可以做到这一点吗?
编辑: 谢谢你。您的解决方案看起来干净优雅,但看起来我的服务器无法处理它,或者我无法让它工作。
我写了一个非常肮脏的解决方案,以 action-name 为键:
tracking.update({ time: time, ts: ts}, JSON.parse('{ "$inc": {"'+action+'": 1}}') , { upsert: true }, function (err) {});
【问题讨论】:
标签: node.js mongodb mongodb-query increment monk