Sid*_*kha 8 json mongodb jsonpath mongodb-query
我们将User数据存储到MongoDB中.客户端提供JSONPath查询以请求过滤的用户集.
例如:
$.users[@.salary > 10000]
是一个JSONPath查询,用于检索工资大于10000的用户.
数据:
"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"
},
........
]
}
Run Code Online (Sandbox Code Playgroud)
然而,同样的MongoQuery将是:
db.inventory.find( { salary: { $gt: 10000 } })
Run Code Online (Sandbox Code Playgroud)
我们的Java应用程序代码连接到MongoDB.
有没有什么办法可以直接运行这个JSONPath查询到MongoDB?
使用Mongo查询意味着将JSONPath查询转换为MongoQuery,这将在代码中进行繁琐的翻译.一个非常强力的方法是让所有用户首先在AS(应用程序)上,然后转换List<Document>为Json字符串,然后运行JSONPath查询.
任何帮助,将不胜感激.
在此阶段无法开箱即用 - 请参阅此开放请求: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
| 归档时间: |
|
| 查看次数: |
565 次 |
| 最近记录: |