保留查询中的数据
Overview
在本指南中,您可以学习;了解如何在 Mongoid 中持久化查询数据。 Mongoid 在有限的容量内支持不符合条件的持久性操作,从而允许您快速执行多文档插入、更新和删除操作。
要学习;了解有关创建过滤条件的更多信息,请参阅指定文档查询指南。
持久性方法
本节介绍可链接到查询以在MongoDB集合中创建、更新和删除数据的方法。
创建文档
您可以使用以下方法根据查询条件创建新文档:
create
:将模型实例保存到MongoDB示例:
Band.where(name: 'Daft Punk').create
create!
:将模型实例保存到MongoDB ,或在发生验证错误时引发异常示例:
Band.where(name: 'Daft Punk').create!
build
:创建未保存的模型实例示例:
Band.where(name: 'Daft Punk').build
new
:创建未保存的模型实例示例:
Band.where(name: 'Daft Punk').new
Update Documents
您可以根据查询条件使用以下方法更新文档:
update
:更新第一个匹配文档的属性示例:
Band.where(name: 'Sundown').update(label: 'ABC Records')
update_all
:更新所有匹配文档的属性示例:
Band.where(country: 'Canada').update_all(label: 'ABC Records')
add_to_set
:将值添加到所有匹配文档中的指定大量示例:
Band.where(name: 'Sun Down').add_to_set(label: 'ABC Records')
bit
:对字段执行按位更新示例:
Band.where(name: 'Sun Down').bit(likes: { and: 14, or: 4 })
inc
:递增字段的值示例:
Band.where(name: 'Sun Down').inc(likes: 14)
pop
:删除大量字段的第一个或最后一个元素示例:
Band.where(name: 'Sun Down').pop(members: -1)
pull
:从大量字段中删除与指定条件匹配的一个或多个值的所有实例示例:
Band.where(name: 'Sun Down').pull(members: 'Jonah Larsen')
pull_all
:从大量字段中删除指定值的所有实例示例:
Band.where(name: 'Sun Down').pull_all(:members, [ 'Jonah Larsen', 'Dan Jones' ])
push
:将指定值追加到大量字段示例:
Band.where(name: 'Sun Down').push(members: 'Jonah Larsen')
push_all
:在大量字段中使用$each
操作符追加指定值示例:
Band.where(name: 'Sun Down').push_all(members: [ 'Jonah Larsen', 'Dan Jones' ])
rename
:重命名所有匹配文档中的字段示例:
Band.where(name: 'Sun Down').rename(name: :title)
set
:为所有匹配文档中的指定字段设置新值示例:
Band.where(name: 'Sun Down').set(likes: 10000)
unset
:删除所有匹配文档中的特定字段示例:
Band.where(name: 'Sun Down').unset(:likes)
Delete Documents
您可以根据查询条件,使用以下方法删除文档:
delete
:删除所有匹配的文档。示例:
Band.where(label: 'ABC Records').delete
destroy
:在运行回调时删除所有匹配的文档。 此方法将所有文档加载到内存中。示例:
Band.where(label: 'ABC Records').destroy