我无法在mongo DB中运行一个增量整数计数器的命令。该命令虽然在mongo shell中运行得很好。
所以这里是示例程序:
require 'rubygems'
require 'mongo'
# create sample mongo local DB
db = Mongo::Connection.new.db("dbtest")
# create sample mongo collection within DB
mytable = db.collection("tabletest")
# inserting some records into sample collection
mytable.insert({'name'=>'apple','mycnt'=>0})
mytable.insert({'name'=>'orange','mycnt'=>0})
mytable.insert({'name'=>'pear','mycnt'=>0})
######## following statement throws error
######syntax error, unexpected '}', expecting $end
mytable.update({"name": "apple"},{"$inc": {"mycnt": 1}})
在运行普通ruby程序(不是mongo shell)时,我不确定语法方面的最后一个语句有什么问题。任何帮助是极大的赞赏。 mongo shell中的类似命令工作正常,如下所示:
# db.tabletest.update({name: "apple"},{$inc: {mycnt: 1}})
答案 0 :(得分:4)
新风格的JSONish Hash语法仅适用于符号作为键,您尝试将其与字符串一起使用。此外,$inc:
将被视为全局变量$inc
,后跟冒号,因此当您要使用:$inc
符号作为键时,不能使用JSONish语法。请改用hashrocket语法:
mytable.update({:name => "apple"},{:$inc => {:mycnt => 1}})
mytable.update({'name' => "apple"},{'$inc' => {'mycnt' => 1}})