У меня есть класс Scala следующим образом
case class Foo(id : String, items : List[Item])
case class Item (name : String)
Скажем, я хочу добавить новый элемент в коллекцию монго для определенного id
.Каков наилучший способ сделать это?
В настоящее время у меня есть метод для вставки новых Foo следующим образом
collection.flatMap(_.insert(foo))
Но проблема в том, что, если я хочу просто добавить другой элемент в конкретный foo, это не делает этого.Это только добавляет целое foo.
Я посмотрел документацию и вижу, что то, что я хочу сделать, может быть достигнуто с помощью push
.
Я думал, что в моем методе должна быть какая-то логика, чтобы он выполнял что-то вроде этого:
def insert(foo) = {
//if collection size is zero then
collection.flatMap(_.insert(foo))
//else if collection is not zero use the push method
}
Я не хотел делать upsert, потому что я думаю, что снижение производительности будетбыть высоким, так как Монго должен искать все элементы, чтобы увидеть, если он уже там, а затем либо обновить, либо вставить.Мои предметы всегда будут уникальными, поэтому они должны быть вставлены сразу.
Есть ли лучший способ сделать это?Я не уверен во всех особенностях Монго.Я ищу ЛУЧШИЕ советы.