2011-11-28 19 views
-2

我無法運行命令mongo數據庫中增加一個整數計數器。該命令雖然在mongo shell中工作得很好。Ruby mongo:無法使用原子操作增加整數字段

所以這裏的示例程序:

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殼)時,什麼是錯在語法方面的最後一條語句。任何幫助是極大的讚賞。在蒙戈外殼類似的命令工作得很好,它看起來像以下:

# db.tabletest.update({name: "apple"},{$inc: {mycnt: 1}}) 

回答

4

新式JSONish哈希語法只能用符號鍵的作品,你想用繩子使用。此外,$inc:將被視爲全局變量$inc,後跟冒號,因此當您要將:$inc符號用作密鑰時,您不能使用JSONish語法。改爲使用hashrocket語法:

mytable.update({:name => "apple"},{:$inc => {:mycnt => 1}}) 
mytable.update({'name' => "apple"},{'$inc' => {'mycnt' => 1}}) 
+0

非常感謝您的幫助 –