我们将 User
数据存储到MongoDB中 . 客户端提供JSONPath查询以请求过滤的用户集 .
例如:
$.users[@.salary > 10000]
是 JSONPath query 用于检索工资大于10000的用户 .
Data:
"users": [ {
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"salary" : 5000,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
},
........
]
}
然而,同样的MongoQuery将是:
db.inventory.find( { salary: { $gt: 10000 } })
我们的Java应用程序代码连接到MongoDB .
Is there any way I can run this JSONPath query to MongoDB directly ??
使用Mongo查询意味着将JSONPath查询转换为MongoQuery,这将在代码中进行繁琐的翻译 . 一个非常强力的方法是让所有用户首先在AS(应用程序)上,然后将 List<Document>
转换为Json字符串,然后运行JSONPath查询 .
任何帮助,将不胜感激 .
1 回答
在此阶段无法开箱即用 - 请参阅此打开请求:https://jira.mongodb.org/browse/SERVER-736
我个人建议你采用某种翻译方法 - 除了蛮力客户端评估之外,我认为这是唯一可行的选择,它只是不能扩展(但对于小数据集可能非常好) . 此外,翻译查询所需的代码可以很好地进行单元测试,因此它应该是一个相当安全的赌注 .
以下是从哪里获取/基于所需翻译代码的一些想法 .
基于正则表达式和解析(专门针对MongoDB):https://github.com/gabrielelana/mongodb-shell-extensions/blob/master/src/jsonpath.js
或者,这可能用于将JSONPath字符串解析为对象模型,然后您可以将其转换为MongoDB查询:https://github.com/json-path/JsonPath