So, my original concern is still in play: what K and V are valid? I glanced at the Mongo docs, but I didn't see it. I see that it claims to accept Any, but I think that is not correct. Something like Primitives + arrays or maps or something sounds more likely.

What I'd like to see is something like this:
```scala
trait MongoKey[K]
object MongoKey {
  implicit def intKey: MongoKey[Int] = new MongoKey[Int] { }
  // all the rest here
}

trait MongoValue[V]
object MongoValue {
  implicit def array[V:MongoValue]: MongoValue[Array[V]] = new MongoValue[Array[V]] { }
}
```
With this, your store should be:
`class MongoStore[K: MongoKey, V: MongoValue : Manifest]`
Then, when you compile, you know for sure your code will work, and you don't need to read more docs to be sure that you don't get failures at runtime.

What you are doing is encoding the rules in the types, and that is the goal of type-safe libraries.