【问题标题】:Making multiple individual keys in couchDB在 couchDB 中制作多个单独的键
【发布时间】:2021-02-01 18:53:42
【问题描述】:

我有下面的视图

{
  "_id": "_design/view2",
  "_rev": "7-12d726e051cc03a083b0b0fcffd721fd",
  "views": {
    "view2": {
      "map": "function (doc) {\n  emit([doc._id,doc.pos, doc.id16, doc.Oid, doc.resultTime],1);\n}"
    }
  },
  "language": "javascript"
}

我想查询 bt 单键值。例如,我想要所有 Oid=123 的文档,我不担心其他键值。我该怎么做?

另外,还有什么其他方法可以通过查询任何单个值来获取文档?

提前致谢。

【问题讨论】:

  • 您需要为要查询的每个键创建一个视图(正如您似乎正在尝试的那样),或者通常更简单:将 _find 端点与 Mango 查询一起使用。你面临什么问题?

标签: couchdb


【解决方案1】:

您需要在设计文档中创建另一个仅发出 oid 字段的视图,并在查询中使用该视图。可以通过将设计文档中的views 更改为以下内容来完成:

"views": {
    "view2": {
      "map": "function (doc) {\n  emit([doc._id,doc.pos, doc.id16, doc.Oid, doc.resultTime],1);\n}"
    },
"byOrderId": {
      "map": "function (doc) {\n  emit(doc.Oid, 1);\n}"
    }
  }

附:在上面的视图中(byOrderId)我发出了 Oid 作为键和 1 作为值。如果您需要文档的任何其他字段,您可以更改发出的值,或者如果您的用例需要整个文档,您可以使用查询的include_docs 参数。

【讨论】:

  • emit 文档 ID 不是一个好主意,因为它总是出现在视图结果中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多