我正在使用Casbah和Salat来创建我自己的Mongodb dao并正在实现这样的getAll方法:
val dao: SalatDAO[T, ObjectId]
def getAll(): List[T] = dao.find(ref = MongoDBObject()).toList
我想知道的是:
答案 0 :(得分:5)
1°/ ModelCompanion
特征提供def findAll(): SalatMongoCursor[ObjectType] = dao.find(MongoDBObject.empty)
方法。您必须为数据库的每个集合执行专门的请求。
如果迭代返回的对象,最好使用SalatMongoCursor[T]
返回的dao.find
进行迭代,而不是进行两次迭代(一次使用来自{{1}的toList
然后你的Iterator
上有另一个特征。
2°/ Salat将_id键与您的班级ID字段进行映射。如果您定义具有List[T]
字段的类。该字段使用mongo _id键进行映射。
您可以使用Salat documentation
id: ObjectId
注释更改此行为
答案 1 :(得分:1)
我实现了类似的东西:
MyDAO.ids(MongoDBObject("_id" -> MongoDBObject("$exists" -> true)))
这会获取所有ID,但考虑到您可能正在做的各种各样的事情,可能不是适用于所有情况的最佳解决方案。现在,我正在构建一个包含5条数据记录的小型系统,并使用它来帮助理解MongoDB的工作原理。
如果这是一个包含1,000,000个条目的生产数据库,则此(或任何getAll查询)将是愚蠢的。不要这样做,而是考虑尝试编写一个追求真实结果的目标查询。