У меня есть пользовательский объект следующим образом:Добавить набор строк в существующий набор с касбы
{ user: "joe", acks: ["a", "b" ] }
Я хочу, чтобы добавить набор строк в поле квитанций. Вот моя попытка сделать это с помощью одного обновления:
def addSomeAcks(toBeAcked = Array[String])
DB.getCollection("userAcks").update(
MongoDBObject("user" -> "joe"),
$addToSet("acks") $each toBeAcked
)
}
def test() {
addSomeAcks(Set("x", "y", "z"))
}
Когда я запускаю этот код я получаю встроенный набор следующим образом:
{ user: "joe", acks: ["a", "b", ["x", "y", "z" ] ] }
но результат я хочу:
{ user: "joe", acks: ["a", "b", "x", "y", "z" ] }
Я могу заставить его работать, вызывая обновление для каждого элемента в toBeAcked
, есть ли способ сделать это за один звонок?
Спасибо. Это имеет смысл. Я не смогу попробовать это до понедельника. Тогда я выберу свой ответ. –
Работал как шарм. Я не помню, чтобы в Scala было обозначено (x: _ *). Я узнал что-то новое. Благодарю. –
Для меня это похоже на ошибку API, потому что вы действительно не хотите передавать один элемент в '$ each'. Вы хотели бы передать коллекцию. Поэтому было бы более ясным изменить подпись '$ each', чтобы взять коллекцию вместо этого. Возможно, это то, что вы ожидали, и он с радостью принял ваш аргумент как один элемент - немного запутывающий API, на мой взгляд. Я не думаю, что Scala API для MongoDB должен точно следовать синтаксису MongoDB. Я думаю, что это так, когда он должен расходиться. –