0

次のコマンドでインポートしたmongodbs WebサイトのJSONファイルのデータを使用して、MongoDBでサンプルDBを作成しました。mongoimport --db test --collection zips --file zips.json データは処理されており、コンソールでデータを検索しようとすると表示されます。

私の問題は、Rails アプリで DB を使用しようとしているときです。クラス、シティを作成しました。コードは次のようになります。

    class City
       include Mongoid::Document
       field :c, as: :city, type: String
       field :l, as: :loc, type: Array
       field :p, as: :population, type: Integer
       field :s, as: :state, type: String
       field :_id, type: Integer
    end

そして、私の mongoid.yml ファイルは次のようになります

    development:
     # Configure available database sessions. (required)
    sessions:
     # Defines the default session. (required)
    default:
     # Defines the name of the default database that Mongoid can connect to.
     # (required).
    database: exjobb
     # Provides the hosts the default session can connect to. Must be an array
     # of host:port pairs. (required)
    hosts:
      - localhost:27017
    options:

    options:

    test:
     sessions:
      default:
       database: exjobb
       hosts:
        - localhost:27017
       options:
       consistency: :strong
        # In the test environment we lower the retries and retry interval to
        # low amounts for fast failures.
        max_retries: 1
        retry_interval: 0

アクティブレコードが無効になっています。Railsコンソールを起動してCity.whereを試すと...次の出力が得られます。

    City.where(city: "Acmar")
    => #<Mongoid::Criteria
    selector: {"c"=>"Acmar"}
    options:  {}
    class:    City
    embedded: false>

City.first を試すと、エラーがスローされます

    NoMethodError: undefined method `to_sym' for nil:NilClass
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/sessions.rb:409:in `__evaluate__'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/sessions.rb:357:in `__database_name__'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/sessions.rb:198:in `database_name'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/sessions.rb:429:in `current_database_name'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/sessions.rb:228:in `mongo_session'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/sessions.rb:171:in `collection'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/contextual/mongo.rb:256:in `initialize'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/contextual.rb:48:in `new'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/contextual.rb:48:in `create_context'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/contextual.rb:31:in `context'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/contextual.rb:21:in `rescue in first'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/contextual.rb:19:in `first'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/mongoid-3.1.2/lib/mongoid/finders.rb:117:in `first'
from (irb):1
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start'
from /Users/admin/.rvm/gems/ruby-1.9.3-p374/gems/railties-    3.2.11/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'

ここにコードをアップロードしました。クローンを作成して、私を助けてください。ご覧のとおり、私のデータベースは空ではありません。http://i.stack.imgur.com/Bho2H.png

4

1 に答える 1

0

Mongoid (ActiveRecord と同様のマッピング規則を使用) は、クラス名を複数形にしてコレクション名を取得します。というコレクションがあるように見えますが、cityMongoid はあなたのクラスを というコレクションにマッピングしますcities

コレクション名をオーバーライドできます。

class City
  store_in collection: "city"
end

または、データを都市コレクションにインポートすることをお勧めします。

于 2013-04-17T13:06:07.567 に答える