Найти по ключу в карте в граале домен 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"])
Другие вопросы по тегам