如何检索在MongoDB的集合,包括ID的所有对象?(How to retrieve all obj

2019-07-30 07:13发布

我使用的卡斯巴和萨拉特创建自己的MongoDB的DAO和正在实施GETALL方法是这样的:

val dao: SalatDAO[T, ObjectId]    
def getAll(): List[T] = dao.find(ref = MongoDBObject()).toList 

我想知道的是:

  1. 有没有更好的方法来检索所有对象?
  2. 当我通过迭代的对象,我找不到对象的_id。 难道排除? 如何将其包含在列表中?

Answer 1:

1°/的ModelCompanion性状提供def findAll(): SalatMongoCursor[ObjectType] = dao.find(MongoDBObject.empty)方法。 你将不得不做的每一个集合你的数据库有一个专门的请求。

如果你遍历返回的对象,它可以更好地与迭代SalatMongoCursor[T]由返回dao.find而不是做两次迭代(一个与toListIterator特质然后又在你的List[T]

2°/萨拉特映射你的类ID字段的_id键。 如果你定义一个类的id: ObjectId场。 该字段映射与蒙戈_id键。 您可以使用改变这种行为@Key注释在指出礼拜文档



Answer 2:

我实现的是这样的:

MyDAO.ids(MongoDBObject("_id" -> MongoDBObject("$exists" -> true)))

这将提取所有的ID,但由于各种各样的你可能会做什么,可能不适合所有情况下的最佳解决方案。 现在,我要建一个小系统,5条数据记录,并以此来帮助了解MongoDB中是如何工作的。

如果这是一个生产数据库1,000,000条记录,那么这(或任何GETALL查询)将是愚蠢的。 相反,这样做,可以考虑尝试写一个有针对性的查询你所寻求的真正的结果后去。



文章来源: How to retrieve all objects in a Mongodb collection including the ids?