从一个小栗子开始
1class Page 2 include MongoMapper::Document 3 4 key :title, String 5 key :day_count, Integer, :default => 0 6 key :week_count, Integer, :default => 0 7 key :month_count, Integer, :default => 0 8 key :tags, Array 9end
1.increment
增加,用来使给定的key增加相应的值
现在数据库里有两条记录,如下:
1> db.pages.find() 2 3{ "_id" : ObjectId("50d30cd943ff68149e000001"), "title" : "111111", "day_count" : 2, "week_count" : 3, "month_count" : 5, "tags" : [ ] } 4 5{ "_id" : ObjectId("50d3e9c843ff681964000001"), "title" : "22222222", "day_count" : 2, "week_count" : 4, "month_count" : 6, "tags" : [ ] }
使用increment
1test "test increment" do 2 3 Page.increment({:title => '22222222'}, :day_count => 1, :week_count => 2, :month_count => 3) 4 5 @page = Page.find_by_title("111111") 6 @page.increment(:day_count => 2, :week_count => 3, :month_count => 5) 7 8 end
再看数据库
1jury:unit rui$ mongo 2MongoDB shell version: 2.2.0 3connecting to: test 4> db.pages.find() 5{ "_id" : ObjectId("50d30cd943ff68149e000001"), "title" : "111111", "day_count" : 4, "week_count" : 6, "month_count" : 10, "tags" : [ ] } 6{ "_id" : ObjectId("50d3e9c843ff681964000001"), "title" : "22222222", "day_count" : 3, "week_count" : 6, "month_count" : 9, "tags" : [ ] } 7>
2.decrement
就是减去
让我们把上面的数值都减一
1test "test decrement" do 2 Page.decrement({:title => '22222222'}, :day_count => 1, :week_count => 1, :month_count => 1) 3 4 @page = Page.find_by_title("111111") 5 @page.decrement(:day_count => 1, :week_count => 1, :month_count => 1) 6 7 end 8 9end
运行后
结果

3.set
给一个key设值
比如
1test "test set" do 2 Page.set({:title => '111111'}, :title => "New111111") 3end

请仔细比较
另:
1@page.set(:title => "New Home") 2Page.set({:title => 'Home'}, :title => "New Home") 3Page.set(@page.id, @page2.id, :title => "New Home")
4.unset
移除
1#@page.unset(:title) 这里只演示第二个 2 3Page.unset({:title => 'New111111'}, :title) 4 5#Page.unset(@page.id, @page2.id, :title)

push
附加一个值到一个数组里
1@page.push(:tags => 'foo') 2 3Page.push({:title => 'Home'}, :tags => 'foo') 4 5Page.push(@page.id, @page2.id, :tags => 'foo')
push_all
附加若干个值到一个数组里
1@page.push_all(:tags => ['foo','bar']) 2 3Page.push_all({:title => 'Home'}, :tags => ['foo','bar']) 4 5Page.push_all(@page.id, @page2.id, :tags => ['foo','bar'])
add_to_set, push_uniq
添加一个唯一的值到数组里
1@page.add_to_set(:tags => 'foo') 2 3Page.add_to_set({:title => 'Home'}, :tags => 'foo') 4 5Page.add_to_set(@page.id, @page2.id, :tags => 'foo')
pull
从数组里删除一个值
1@page.pull(:tags => 'foo') 2 3Page.pull({:title => 'Home'}, :tags => 'foo') 4 5Page.pull(@page.id, @page2.id, :tags => 'foo')
pull_all
从数组里删除若干个值
1@page.pull_all(:tags => ['foo','bar']) 2 3Page.pull_all({:title => 'Home'}, :tags => ['foo','bar']) 4 5Page.pull_all(@page.id, @page2.id, :tags => ['foo','bar'])
pop
删除数组里最后的元素
1@page.pop(:tags => 1) 2 3Page.pop({:title => 'Home'}, :tags => 1) 4 5Page.pop(@page.id, @page2.id, :tags => 1)
如果传入的是-1则删除第一个元素