Учитывая следующую структуру данных:удалить вложенный документ Монго использования Касбы
{
"_id" : ObjectId("55760212e4b011ee8c72fb1f"),
"firstname" : "joe",
"lastname" : "blow",
"email" : "[email protected]",
"sysadmin" : false,
"siteadmin" : false,
"sites" : [
{
"siteId" : ObjectId("55760212e4b011ee8c72fb1e"),
"notification" : false
}
]
}
Я пытаюсь $pull
вложенной sites
объекта с использованием ObjectId
в качестве критериев поиска. Следующий код:
val siteSearch = MongoDBObject("siteId" -> siteId)
val query = MongoDBObject("sites" -> siteSearch)
db(collection).update(query, $pull(query))
генерирует для следующих query
{ "sites" : { "siteId" : { "$oid" : "55760212e4b011ee8c72fb1e"}}}
Это не вынимая сайт, я предполагаю, потому что я хочу, чтобы query
выглядеть следующим образом:
{ "sites" : { "siteId" : ObjectId("55760212e4b011ee8c72fb1e")}}
Я m не уверен, как заставить Cashbah выдать правильный запрос.
typo в первом блоке кода 'db (collection) .update (query, $ pull (query))' должен читать 'db (collectc) .update (query, $ pull (updt)) ' – andyczerwonka
@andyczerwonka Я исправил это прямо сейчас. Спасибо, что указали на это. –
@andyczerwonka Я отредактировал свой ответ, чтобы показать альтернативный синтаксис с помощью DSL. Не могли бы вы попробовать, если он работает, поскольку я не могу проверить его прямо сейчас? –