假设我想拥有数据库中每个文档的运行计数。
例如,从空数据库开始;调用Collections.insert
将检查增量全局计数变量,然后将其值存储为文档中的字段。
在db上将读取一些示例输入,如下所示。 例如。数:1名:第一名 count:2 name:Second
答案 0 :(得分:1)
您可以使用集合来跟踪计数器。我们称之为counters
。
在您的集合中插入文档之前,请调用find_and_modify
集合中的counters
以原子方式递增计数器并返回其值。将此值存储在文档上,然后将其插入。
此程序在MongoDB docs中有详细描述。请注意,对于具有大量文档的数据库,它不会扩展,如那些文档中所述。
答案 1 :(得分:1)
为什么不保持简单,如果要将全局计数器存储在Meteor会话变量中(对客户端是全局的)请尝试:
// doc is your record. Make other changes here too:
// i.e. doc.answer_text = "Ask Mork, Na-nu, Na-nu!";
doc.count = Session.get('myCounter');
doc.count++;
Stuff.insert( doc ); // Collection name is Stuff.
检查当前用户是否更改并重置计数器:
Session.set('myUserId', Meteor.userId);
if (Session.get('myUserId') !== Meteor.userId)
Session.set('myCounter', 0);
如果您只想增加存储在集合中的计数器:
Stuff.insert( doc, {$inc: {mycounter: 1} } );