MongoMapper returns 调用“all”时设置空文档

MongoMapper returns empty document set on call to `all`

我在 mongodb 中有一个 collection:

> use my_db
switched to db my_db
> db.my_coll.count()
278

我在 ruby 中有一个 class:

class MyColl
  include MongoMapper::Document
  key :fst, Integer
  key :sec, Float
end

当我打电话时:

MongoMapper.database = 'my_db'
MyColl.count
#=> 0

虽然我绝对希望收到与 mongo 控制台中相同的结果。没有错误,什么都没有。

我在这里错过了什么?

MongoMapperActiveRecord 约定要求 class 名称对应集合名称为:

self.class.name.gsub(/::/, '.').underscore.pluralize == coll_name

也就是说,class MyColl 期望基础集合被命名为 my_colls。尽管数据库中没有这样的集合,MongoMapper 默默地假设用户想要透明地创建这个集合。这就是为什么 MyColl.count returns 零,而不是抛出异常。

> db.my_coll.renameCollection("my_colls")

会成功的。