MongoMapper中的update方法

從一個小栗子開始 shell

class Page
  include MongoMapper::Document

  key :title,       String
  key :day_count,   Integer, :default => 0
  key :week_count,  Integer, :default => 0
  key :month_count, Integer, :default => 0
  key :tags,        Array
end

1.increment 數據庫

增長,用來使給定的key增長相應的值 數組

如今數據庫裏有兩條記錄,以下: ruby

> db.pages.find()
{ "_id" : ObjectId("50d30cd943ff68149e000001"), "title" : "111111", "day_count" : 2, "week_count" : 3, "month_count" : 5, "tags" : [ ] }
{ "_id" : ObjectId("50d3e9c843ff681964000001"), "title" : "22222222", "day_count" : 2, "week_count" : 4, "month_count" : 6, "tags" : [ ] }

使用increment app

test "test increment" do

    Page.increment({:title => '22222222'}, :day_count => 1, :week_count => 2, :month_count => 3)
    
    @page = Page.find_by_title("111111")
    @page.increment(:day_count => 2, :week_count => 3, :month_count => 5)
    
  end
再看數據庫
jury:unit rui$ mongo
MongoDB shell version: 2.2.0
connecting to: test
> db.pages.find()
{ "_id" : ObjectId("50d30cd943ff68149e000001"), "title" : "111111", "day_count" : 4, "week_count" : 6, "month_count" : 10, "tags" : [ ] }
{ "_id" : ObjectId("50d3e9c843ff681964000001"), "title" : "22222222", "day_count" : 3, "week_count" : 6, "month_count" : 9, "tags" : [ ] }
>

2.decrement ui

就是減去 spa

讓咱們把上面的數值都減一 code

test "test decrement" do
    Page.decrement({:title => '22222222'}, :day_count => 1, :week_count => 1, :month_count => 1)
    
    @page = Page.find_by_title("111111")
    @page.decrement(:day_count => 1, :week_count => 1, :month_count => 1)
    
  end
  
end
運行後

結果 rem


3.set

給一個key設值

好比 it

test "test set" do
  Page.set({:title => '111111'}, :title => "New111111")
end

請仔細比較

另:

@page.set(:title => "New Home")
Page.set({:title => 'Home'}, :title => "New Home")
Page.set(@page.id, @page2.id, :title => "New Home")

4.unset

移除

#@page.unset(:title) 這裏只演示第二個 
Page.unset({:title => 'New111111'}, :title) 
#Page.unset(@page.id, @page2.id, :title) 


push

附加一個值到一個數組裏

@page.push(:tags => 'foo') 
Page.push({:title => 'Home'}, :tags => 'foo') 
Page.push(@page.id, @page2.id, :tags => 'foo')

push_all

附加若干個值到一個數組裏

@page.push_all(:tags => ['foo','bar']) 
Page.push_all({:title => 'Home'}, :tags => ['foo','bar']) 
Page.push_all(@page.id, @page2.id, :tags => ['foo','bar'])

add_to_set, push_uniq

添加一個惟一的值到數組裏

@page.add_to_set(:tags => 'foo') 
Page.add_to_set({:title => 'Home'}, :tags => 'foo') 
Page.add_to_set(@page.id, @page2.id, :tags => 'foo') 

pull

從數組裏刪除一個值

@page.pull(:tags => 'foo') 
Page.pull({:title => 'Home'}, :tags => 'foo') 
Page.pull(@page.id, @page2.id, :tags => 'foo')

pull_all

從數組裏刪除若干個值

@page.pull_all(:tags => ['foo','bar']) 
Page.pull_all({:title => 'Home'}, :tags => ['foo','bar']
Page.pull_all(@page.id, @page2.id, :tags => ['foo','bar'])

pop

刪除數組裏最後的元素

@page.pop(:tags => 1) 
Page.pop({:title => 'Home'}, :tags => 1) 
Page.pop(@page.id, @page2.id, :tags => 1)
若是傳入的是-1則刪除第一個元素
相關文章
相關標籤/搜索