2
我有一個類似JSON的scala對象,它由任何遞歸集合組成:scala.collection.Map [String,Any],scala.collection.Seq [任何],以及基本類型:Int,Float,String,Double,Long,這些都是通過Web API接收的。將結構化Map [String,Any]對象插入到mongodb中的快速方法
如果我試圖用(例如插入)直接將這個對象噴射到一個mongodb中,它會在對象是非集合類型的map [String,_]時起作用。但是如果映射值本身就是集合,那麼mongodb驅動程序庫會失去主意並進入無限循環(堆棧溢出)。把這樣一個對象放在MongoDB中的正確方法是什麼?
(有casbah,但看起來主要用於增量構建對象,而不是轉換現有對象)。
這裏是一個失敗的例子:
val obj2= scala.collection.mutable.HashMap[String,Any]()
obj2 += ("a" -> 123)
val obj1= scala.collection.mutable.HashMap[String,Any]()
obj1 += ("x" -> List(obj2))
val anyMapLike:scala.collection.Map[String,Any] = obj1
collection.insert(anyMapLike) // Stack overflow here!
...去香蕉:
java.lang.StackOverflowError: null
at scala.collection.convert.Wrappers$MutableMapWrapper.underlying(Wrappers.scala:216)
at scala.collection.convert.Wrappers$MutableMapWrapper.productElement(Wrappers.scala:216)
at scala.runtime.ScalaRunTime$$anon$1.next(ScalaRunTime.scala:185)
...
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:234)
at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:295)
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:234)
at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:295)
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:234)
at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:295)
...
你能舉一個例子導致問題的地圖嗎? – Ross
很高興。更新了上述內容。 – user48956