MeteorJS无法更新文档计数

时间:2014-06-16 13:42:35

标签: methods meteor mongodb-query

这是我的功能,它不会更新NumStat集合文档的计数。

Meteor.methods({
addDocument: function(array){
    object = {
        numbers : array,
        date : new Date()
    }
    NumArray.insert(object);

    for (var i = 0; i < array.length; i++) {
        NumStat.update({num : array[i]},{$inc : {count : 1}});
        console.log(NumStat.findOne({num : array[i]})); // this throws undefined
    }
}
});

如果我这样做:     NumStat.update({num:2},{$ inc:{count:1}}); 它运作得很完美,但不像我提出的例子!这种方法有什么问题,我怎样才能得到我想要的结果?增加NumStat文档的计数按数组[item]

查找文档

解决方案: 这是我的坏,因为数组上的值是一个字符串,数据库上的num值是一个int。解决方案是使用parseInt(array [i])。一个更好的解决方案是使用findAndModify作为@Dewfy提到。

1 个答案:

答案 0 :(得分:1)

我根本不了解Mongo的JavaScript实现,但是:

  1. update其他方言(Java或C#)不创建记录但更新现有方言,因此请查看save
  2. 的使用情况
  3. 在Mongo中有一个概念&#39; write concern&#39; - 这可能会延误真正的写作。确保您处理Acknowledged。
  4. P.S。而不是循环使用findAndModify指定要修改的ID数组 - 那么您可以避免循环并将修改逻辑放置到服务器端