Найти по ключу в карте в граале домен mongodb
Я использую плагин Mongodb с Grails (последние версии).
У меня есть домен, похожий на:
class User
{
HashMap baseAddr
static mapWith = "mongo"
}
Данные пользователя в БД имеют вид:
{
"_id" : NumberLong(1),
"baseAddr" : {
"buildingNo" : "",
"level" : "",
"side" : "",
"street" : "asdfasdf",
"zipcode" : "asdfasdf",
"state" : null,
"municipality" : null,
"flatNo" : "adsfasdf",
"city" : "New Delhi",
"country" : "IN"
},
"version" : 0
}
Я хочу найти всех тех пользователей, у которых есть baseAddr.city == "Нью-Дели", использующих динамический искатель или критерии grails. Пожалуйста помоги
2 ответа
Решение
Вы можете использовать с критериями Gorm здесь код
def testData = User.withCriteria {
eq("baseAddr.city", "New Delhi")
}
я проверил этот код работает нормально
То, как вы определили модель вашего домена, я думаю, что это невозможно сделать с помощью поиска или критериев.
Вы должны были создать домен адресов и связать этот домен здесь, в классе пользователя.
class User
{
Address baseAddr
static mapWith = "mongo"
}
Class Address
{
String buildingNo
....
}
Однако с текущей реализацией, которая у вас есть, вы можете напрямую использовать Gmongo в своем коде и получать данные.
def mongo = new GMongo()
def db = mongo.getDB("db")
def citydoc = db.user.find(["baseAddr.city": "New Delhi"])