我有这样的模特:
@Salat
class Base
case class Outer(@Key("_id") id:String = "outer", inners:List[Inner] = Nil) extends Base
case class Inner(id:String = "inner") extends Base
object Outer extends SalatDAO[Outer, ObjectId](DBConnections.local("outers"))
如果我插入一个具有内部的外部,如下所示:
Outer.insert(new Outer("outer-b", List(new Inner("inner-b"))))
我在数据库中最终得到了这个:
{
"_id":"outer-b",
"_typeHint":"com.github.grinchy.farkle.models.Outer",
"inners":[
{
"_typeHint":"com.github.grinchy.farkle.models.Inner",
"id":"inner-b"
}
]
}
但是,如果我只是尝试使用$ push:
将内部附加到外部列表中Outer.insert(new Outer("outer-a"))
val query = MongoDBObject("_id" -> "outer-a")
val stmt = MongoDBObject("$push" -> MongoDBObject("inners" -> new Inner("inner-a")))
Outer.update(query, stmt)
然后将内部插入为数组:
{
"_id":"outer-a",
"_typeHint":"com.github.grinchy.farkle.models.Outer",
"inners":[
[
"inner-a"
]
]
}
在不反序列化外部对象的情况下追加内部案例类列表的正确方法是什么?