是否可以使用 JSON/字段散列插入 mongodb 集合,但不使用 ObjectId 字段,而是_id
使用不同的索引字段,例如external_id
?
我使用它来更新我每天从提要收到的一些项目,因此提要项目不包含我的内部 ID。
是否可以使用 JSON/字段散列插入 mongodb 集合,但不使用 ObjectId 字段,而是_id
使用不同的索引字段,例如external_id
?
我使用它来更新我每天从提要收到的一些项目,因此提要项目不包含我的内部 ID。
是的,可以在 Mongoid 中使用自定义 id 进行 upsert,但仅在 2012 年 6 月 27 日左右的 3.0.0.rc 中。
应用程序/模型/item.rb
class Item
include Mongoid::Document
field :external_id, type: String
field :_id, type: String, default: ->{ external_id }
field :text, type: String
end
测试/单元/item_test.rb
require 'test_helper'
class ItemTest < ActiveSupport::TestCase
def setup
Item.delete_all
end
test "external id" do
Item.new( text: 'Lorem ipsum' ).upsert
Item.new( external_id: 'an external id', text: 'dolor sit amet' ).upsert
puts Item.all.to_a.collect{|item|item.inspect}
end
end
输出
运行选项:--name=test_external_id
# Running tests:
#<Item _id: 4ff202501f98ce8202c03268, _type: nil, external_id: nil, text: "Lorem ipsum">
#<Item _id: an external id, _type: nil, external_id: "an external id", text: "dolor sit amet">
.
Finished tests in 0.028232s, 35.4208 tests/s, 0.0000 assertions/s.
1 tests, 0 assertions, 0 failures, 0 errors, 0 skips
为此,您必须从 github 安装,访问并从
https://github.com/mongoid/mongoid
bundle install
bundle exec rake install
这是使这成为可能的提交的链接。
https://github.com/mongoid/mongoid/commit/3062363bad3ab947d7689502d6805652b20e89a0