Mongodb 将属性作为case类的列表返回
假设我有Mongodb 将属性作为case类的列表返回,mongodb,scala,reactivemongo,Mongodb,Scala,Reactivemongo,假设我有 case class Foo(_id: BSONObjectID, bars: Set[Bar]) case class Bar(_id: BSONObjectID, name: String) 如何使用投影获取特定Foo的条 我试过(省略处理程序的声明) 但它不起作用 关于如果您只考虑每个文件的栏>代码>字段为设置[BAR] ,光标不是栏>代码>一个,但是光标[SET[BAR] ] /,因此您必须在范围内有一个 BSONReader 。@ CcChanTip我已经尝试过,但是我获得
case class Foo(_id: BSONObjectID, bars: Set[Bar])
case class Bar(_id: BSONObjectID, name: String)
如何使用投影获取特定Foo
的条
我试过(省略处理程序的声明)
但它不起作用
关于如果您只考虑每个文件的<代码>栏>代码>字段为<代码>设置[BAR] ,光标不是<代码>栏>代码>一个,但是<代码>光标[SET[BAR] ] /<代码>,因此您必须在范围内有一个<代码> BSONReader <代码>。@ CcChanTip我已经尝试过,但是我获得
无法找到参数读取器的隐式值:reactivemongo.bson.BSONDocumentReader[Set[Bar]]
。我是否缺少导入?@cchantep我在描述中省略了以下内容(我认为这很明显,但可能不是)implicit val bsonF=Macros.handler[Bar]
。Set
没有提供标准的BSONReader
(因为它可能不安全),因此,您要么浏览列表
,要么实现自己的集
读取器。没有为这种边缘情况提供BSONDocumentReader
。您必须实现自己的隐式def myEdgeReader(隐式br:BSONReader[_
val bars: Future[Option[Set[Bar]]] = fooes.find(
BSONDocument("_id" -> BSONObjectID("specificId")), // Match condition
BSONDocument("_id" -> 0, "bars" -> 1) // Projection
).cursor[Bar]().collect[Set]()