我遇到的情况是,我正在使用字符串查询 MongoDB,以获取在对象层次结构中不止一层的字段。此查询必须是字符串。例如,我在 Groovy 中查询类似这样的内容:
def queryField = 'a.b.c' //this is variable and can be different every time
def result = mongodb.collection.findOne([queryField:5])
没有出现问题,我想在结果中找到嵌套字段的值。使用 GPath,我可以深入一层并获得 a 的价值
def aObj = result."a" //or result["a"]
但是,我想通过执行以下操作来更深入地了解:
def queryField = "a.b.c" //this can change every time and is not always 'a.b.c'
def cObj = result[queryField] //since field is variable, can't just assume result.a.b.c
现在这在 Groovy 中不起作用。这里记录了一个错误,但我想知道是否有更好的解决方法可以用于这种情况,它比我通过在点上拆分然后构建对象遍历来解析字符串更干净。请注意,“abc”在运行时是可变的并且是未知的(例如,它可能是“abd”)。