gpt4 book ai didi

mongodb - 如何使用InsideCircle和另一个术语查询MongoDB?

转载 作者:行者123 更新时间:2023-12-02 15:32:07 26 4
gpt4 key购买 nike

如何查询MongoDB的地理空间位置和其他术语(例如标签或类别)?我尝试了以下条件

searchResults = Company.withCriteria {
withinCircle( [50d,8.5d], 60 )
inList('tags', tagName)
}

但似乎没有为标准实现“withinCircle”。还有另一种技术吗?使用动态查找器“findAllBy ... And ...”也无效:
Company.findAllByTagsAndLocationWithinCircle( tagName, [ [50d, 8.5d], 60 ] )

(两者都给我一个“groovy.lang.MissingMethodException:方法无签名...”错误。)

我会错过某些东西吗,还是可以通过低级API(gmongo)等找到方法?

域类如下所示:
class Company {
ObjectId id
Set tags = [] // a set of ObjectID referencing Tags
List<String> tagList = new ArrayList<String>() // a list of names from the Tags
}

class Tags {
ObjectId id
Set companies = [] // a set of ObjectID referencing Companies
}

BtW:Company.tags和Company.tagList是同步的,仅用于测试(我从标签开始,但认为tagList可以帮助搜索)

最佳答案

更新:

class Company {
ObjectId id
List location

static hasMany = [tags: Tag]

static mapping = {
location geoIndex:true
}
.....
//static mapWith = 'mongo' //if required
}

class Tags {
ObjectId id
String name
.......
//static mapWith = 'mongo' //if required
}

根据上述 Realm 类别,以下条件将为您提供所需的条件。纠正映射是否正确以及您需要什么。

条件中未使用AFAIK inList。您可以按照以下条件尝试:
searchResults = Company.withCriteria {
withinCircle('location', [[50d,8.5d], 60])
tags{
eq('name', tagName)
}
}

考虑到我上面对 withinCircle的评论,并假设 tagName是列表。

(*未经测试)或者,使用动态查询可以
def companies = Company.findAllByLocationWithinCircle([[50d, 8.5d], 60]).findAll{
tagName in it.tags*.name
}

如果 withinCircle与动态查找程序的组合不能同时使用,则它也可能被破坏(这可能会消耗资源)。

关于mongodb - 如何使用InsideCircle和另一个术语查询MongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18068501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com