如何在mongodb中使用jsonpath?
Posted
技术标签:
【中文标题】如何在mongodb中使用jsonpath?【英文标题】:how to use jsonpath in mongodb? 【发布时间】:2018-03-04 18:08:34 【问题描述】:有没有办法在 mongodb 3.4/3.6 中使用 jsonpath?示例如下所示,参考链接JSON path parent object, or equivalent MongoDB query:
var t1 = db.runCommand(aggregate : 'news_feeds',
pipeline:[],
cursor : batchSize : 10);
t1.cursor.firstBatch.forEach(function(doc)
var json = tojson(doc);
var json1="$.feeds.reviews[*].name"
var result = jsonPath(json, json1);
print(result);
)
这个查询给出了一个jsonPath没有定义的错误,但是这个jsonpath在javascript中有
请帮忙
问候
克里斯
【问题讨论】:
该错误是因为 MongoDB shell 无法将jsonPath
识别为函数。 MongoDB 目前不支持 jsonPath。
在 mongodb 中是否有另一种使用 jsonpath 的方法?
即使我使用 npm 安装了 json-path,并尝试执行,它说 require 未定义,请帮助 var jpath = require('json-path'); var t1 = db.runCommand(aggregate: 'news_feeds', pipeline:[], cursor: batchSize: 10); t1.cursor.firstBatch.forEach(function(doc) var json = tojson(doc); var res = jpath.resolve(json, "$.feeds.reviews[*].name") print(res); )
npm
和 MongoDB shell 是两个不同的东西。 npm
用于节点。两者之间唯一的相似之处是都使用 Javascript 作为语言。我不熟悉 jsonPath 是如何实现的,但是可能有一种方法可以在mongo
shell 中执行 jsonPath 包,但 MongoDB 本身从不支持使用 jsonPath。
【参考方案1】:
通过使用 mongodb-shell-extensions https://www.npmjs.com/package/mongodb-shell-extensions#jsonpath 解决了,效果很好。
问候 克里斯
【讨论】:
【参考方案2】:就我而言,我想更新 Mongo DB 中的一个字段,并且我拥有该字段的 JSON 路径。我最终使用了一些简单的字符串替换来完成从 JSON 路径到 mongo 查询路径的转换。
private String toMongoPath(@Nonnull String jsonPath)
return jsonPath.replace("'", "")
.replace("][", ".")
.replace("$[", "")
.replace("]", "");
输入:
$['store']['book'][0]['title']
输出:
store.book.0.title
【讨论】:
以上是关于如何在mongodb中使用jsonpath?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 dojox.jsonPath.query 过滤/查询日期
如何过滤包含 Python 中的子字符串的 jsonpath 表达式中的 URL 列表