【问题标题】:how to use jsonpath in mongodb?如何在mongodb中使用jsonpath?
【发布时间】: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。

标签: 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-02
      • 2018-12-14
      • 2016-03-30
      • 1970-01-01
      • 2021-05-02
      • 2011-11-24
      • 2017-06-18
      • 1970-01-01
      相关资源
      最近更新 更多