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 控制台中相同的结果。没有错误,什么都没有。
我在这里错过了什么?
MongoMapper
的 ActiveRecord
约定要求 class 名称对应集合名称为:
self.class.name.gsub(/::/, '.').underscore.pluralize == coll_name
也就是说,class MyColl
期望基础集合被命名为 my_colls
。尽管数据库中没有这样的集合,MongoMapper
默默地假设用户想要透明地创建这个集合。这就是为什么 MyColl.count
returns 零,而不是抛出异常。
> db.my_coll.renameCollection("my_colls")
会成功的。
我在 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 控制台中相同的结果。没有错误,什么都没有。
我在这里错过了什么?
MongoMapper
的 ActiveRecord
约定要求 class 名称对应集合名称为:
self.class.name.gsub(/::/, '.').underscore.pluralize == coll_name
也就是说,class MyColl
期望基础集合被命名为 my_colls
。尽管数据库中没有这样的集合,MongoMapper
默默地假设用户想要透明地创建这个集合。这就是为什么 MyColl.count
returns 零,而不是抛出异常。
> db.my_coll.renameCollection("my_colls")
会成功的。