博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoMapper中的update方法
阅读量:5874 次
发布时间:2019-06-19

本文共 2881 字,大约阅读时间需要 9 分钟。

hot3.png

从一个小栗子开始

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,        Arrayend

1.increment

增加,用来使给定的key增加相应的值

现在数据库里有两条记录,如下:

> 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

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$ mongoMongoDB shell version: 2.2.0connecting 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

就是减去

让我们把上面的数值都减一

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
运行后

结果

3.set

给一个key设值

比如

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则删除第一个元素

转载于:https://my.oschina.net/u/572987/blog/99760

你可能感兴趣的文章
Highcharts使用表格数据绘制图表
查看>>
Thinkphp5笔记三:创建基类
查看>>
LNMP之编译安装PHP出现的问题
查看>>
hdu5373
查看>>
4.单链表的创建和建立
查看>>
testng生成报告 testng-xslt 美化测试报告
查看>>
Android 好看的搜索界面,大赞Animation
查看>>
查询反模式 - GroupBy、HAVING的理解
查看>>
[转]动态加载javascript
查看>>
【协议】5、gossip 协议
查看>>
基于配置文件的redis的主从复制
查看>>
hasura graphql 角色访问控制
查看>>
springmvc中controller内方法跳转forward?redirect?
查看>>
C#委托,事件理解入门 (译稿)转载
查看>>
容器的end()方法
查看>>
[转] Agile Software Development 敏捷软件开发
查看>>
HDU 1007 Quoit Design (最小点对,模板题)
查看>>
Windows Phone 7 自定义事件
查看>>
Objective-c 网址中带中文解决方法
查看>>
向函数传递数组的问题
查看>>