【问题标题】:Mongoid run core mongo actionMongoid 运行核心 mongo 动作
【发布时间】:2019-10-29 22:19:05
【问题描述】:

我在 Rails 项目中使用 mongoid。 我有一个 API 调用,它以 JSON 格式(哈希数组)获取客户端记录。

users = api.get_users # Returns JSON

为了利用 Mongo 的搜索、排序和分页功能,我想将通过 API 获得的记录存储在数据库中。

当然,我可以遍历 JSON 中的每条记录并执行类似 User.create(user) 的操作,但我想一次导入所有记录并在数据库中创建每条记录。也许使用https://docs.mongodb.com/manual/reference/program/mongoimport

有什么建议吗?

【问题讨论】:

    标签: ruby-on-rails ruby mongodb mongoid


    【解决方案1】:

    您是对的——因为您的数据是 JSON 格式,所以 mongoimport 是您想要使用的工具。导入数据后,您可以设置 Mongoid 文档架构以匹配您导入的数据。

    如果您想对一些示例数据进行尝试,这里有一个helpful mongoimport tutorial

    对于本教程中的库存数据,您可以设置架构:

    # JSON data: { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" }
    
    class Inventory
      include Mongoid::Document
      store_in collection: 'inventory'
    
      field :item, type: String
      field :qty, type: Integer
      field :size, type: Hash
      field :status, type: String
    end
    

    这里有几点需要注意:

    • 确保将数据导入到要创建的模型的默认集合名称(即导入到名为 User 的模型的“用户”集合)在模型上指明数据存储在哪个集合中(使用store_in 方法)

    • 当您将数据作为哈希导入时,您可以选择如何在 Mongoid 中表示它。在这个例子中我刚刚使用了一个 Hash,但你也可以让 size 成为它自己的嵌入文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多