【问题标题】:meteor is $inc throws error, but query should be correctmeteor is $inc 抛出错误,但查询应该是正确的
【发布时间】:2015-09-12 16:58:46
【问题描述】:

我想upsert流星集合中的一个对象:

UserFollowers.upsert({user_id:user_id,size:{'$lt':10}},{
    $inc:{size:1}
});

但这会引发错误:

调用方法 'user_follow' MinimongoError 时出现异常:无法将 $inc 修饰符应用于非数字

我在这个集合中只有一个对象,这个查询正在工作:

UserFollowers.upsert({user_id:user_id},{
    $inc:{size:1}
});

无论size 设置为什么,查询从不

此查询也正确返回对象:

UserFollowers.find({user_id:"a",size:{'$lt':10}}).fetch()

你有什么想法/建议吗?

谢谢!

【问题讨论】:

  • 这个问题还存在吗?有任何答案帮助您解决了吗?
  • 两个答案都有效,但我在任何文档中都找不到“需要 $set”。
  • Nils,你说得对,those modifiers 中的任何一个都是有效的。但不知何故 Meteor 以这种方式工作,$set 应该是第一个。在最新的 v1.2.0.1 中问题仍然存在?
  • 我们还没有升级到 1.2,但我想使用 'setOnInsert' 一切都应该没问题。

标签: meteor


【解决方案1】:

Meteor 似乎试图将 {'$lt':10} 设置为 size 的初始值,然后增加它。

解决问题的是这个查询:

UserFollowers.upsert({user_id:user_id,size:{$lt:10}},{
        $setOnInsert:{size:0},
        $inc:{size:1}
    });
}

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2018-01-17
    • 2015-01-04
    • 2019-03-23
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多