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