Советы, необходимые на ReactiveMongo Insert - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть класс 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, потому что я думаю, что снижение производительности будетбыть высоким, так как Монго должен искать все элементы, чтобы увидеть, если он уже там, а затем либо обновить, либо вставить.Мои предметы всегда будут уникальными, поэтому они должны быть вставлены сразу.

Есть ли лучший способ сделать это?Я не уверен во всех особенностях Монго.Я ищу ЛУЧШИЕ советы.

...