对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

保留查询中的数据

在本指南中,您可以学习;了解如何在 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:更新第一个匹配文档的属性

    • 示例: 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:删除所有匹配的文档。

    • 示例: Band.where(label: 'ABC Records').delete
  • destroy:在运行回调时删除所有匹配的文档。 此方法将所有文档加载到内存中。

    • 示例: Band.where(label: 'ABC Records').destroy

要学习;了解如何自定义持久性目标,请参阅持久性配置指南。