我使用的卡斯巴和萨拉特创建自己的MongoDB的DAO和正在实施GETALL方法是这样的:
val dao: SalatDAO[T, ObjectId]
def getAll(): List[T] = dao.find(ref = MongoDBObject()).toList
我想知道的是:
- 有没有更好的方法来检索所有对象?
- 当我通过迭代的对象,我找不到对象的_id。 难道排除? 如何将其包含在列表中?
我使用的卡斯巴和萨拉特创建自己的MongoDB的DAO和正在实施GETALL方法是这样的:
val dao: SalatDAO[T, ObjectId]
def getAll(): List[T] = dao.find(ref = MongoDBObject()).toList
我想知道的是:
1°/的ModelCompanion
性状提供def findAll(): SalatMongoCursor[ObjectType] = dao.find(MongoDBObject.empty)
方法。 你将不得不做的每一个集合你的数据库有一个专门的请求。
如果你遍历返回的对象,它可以更好地与迭代SalatMongoCursor[T]
由返回dao.find
而不是做两次迭代(一个与toList
从Iterator
特质然后又在你的List[T]
2°/萨拉特映射你的类ID字段的_id键。 如果你定义一个类的id: ObjectId
场。 该字段映射与蒙戈_id键。 您可以使用改变这种行为@Key
注释在指出礼拜文档
我实现的是这样的:
MyDAO.ids(MongoDBObject("_id" -> MongoDBObject("$exists" -> true)))
这将提取所有的ID,但由于各种各样的你可能会做什么,可能不适合所有情况下的最佳解决方案。 现在,我要建一个小系统,5条数据记录,并以此来帮助了解MongoDB中是如何工作的。
如果这是一个生产数据库1,000,000条记录,那么这(或任何GETALL查询)将是愚蠢的。 相反,这样做,可以考虑尝试写一个有针对性的查询你所寻求的真正的结果后去。