我正在使用带有grails(最新版本)的mongodb插件。
我的域名类似于:
class User
{
HashMap baseAddr
static mapWith = "mongo"
}
DB中的用户数据如下:
{
"_id" : NumberLong(1),
"baseAddr" : {
"buildingNo" : "",
"level" : "",
"side" : "",
"street" : "asdfasdf",
"zipcode" : "asdfasdf",
"state" : null,
"municipality" : null,
"flatNo" : "adsfasdf",
"city" : "New Delhi",
"country" : "IN"
},
"version" : 0
}
我想找到所有使用grails动态查找器或条件的baseAddr.city ==“New Delhi”的用户。 请帮忙
答案 0 :(得分:1)
您定义域模型的方式,我认为不可能使用finder或条件执行此操作。
您应该已经在User类中创建了一个地址域并将该域关联起来。
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"])
答案 1 :(得分:1)
您可以使用gorm标准 这是代码
def testData = User.withCriteria {
eq("baseAddr.city", "New Delhi")
}
我测试了这段代码,工作正常