根据嵌套子文档中的值筛选couchdb文档

根据嵌套子文档中的值筛选couchdb文档,couchdb,pouchdb,Couchdb,Pouchdb,我想创建一个map/reduce函数,它根据子文档中的嵌套值过滤文档。但是检索父文档 我有以下文件: { "_id": "1", "_rev": "1-991baf1d86435a73a3460335cc19063c", "configuration_id": "225f9d47-841c-43c2-90c2-e65bb49083d3", "name": "test", "image": "", "type": "A", "created": "",

我想创建一个map/reduce函数,它根据子文档中的嵌套值过滤文档。但是检索父文档

我有以下文件:

{
   "_id": "1",
   "_rev": "1-991baf1d86435a73a3460335cc19063c",
   "configuration_id": "225f9d47-841c-43c2-90c2-e65bb49083d3",
   "name": "test",
   "image": "",
   "type": "A",
   "created": "",
   "updated": 1,
   "destroyed": ""
}

{
   "_id": "225f9d47-841c-43c2-90c2-e65bb49083d3",
   "_rev": "1-3e3a1c357c86cbd1cd42b5980b9655a4",
   "configuration_packages_id": "cd19b0ba-157d-4dd4-adac-56fd470bfed4",
   "configuration_distribution_id": "5b538411-ca99-46c7-ac3c-1f382e4577a9",
   "type": "CONFIGURATION",
   "configuration": {
       "hostname": "example123",
       "images": [
           "image1",
           "image2"
       ]
   }
}
现在我想检索所有类型为A且主机名为example123的文档

此时,我检索所有类型为A的文档,如下所示:

function (doc) {
            if (doc.type === "A") {
                emit([doc.updated], doc);
            }
        }
但现在,我还想对主机名进行筛选。 我不确定如何使用CouchDB实现这一点。

TLDR; 你不能这样做

细节 您的“嵌套”文档只能通过联接访问,但无法查询

本机执行此类查询的正确方法是在父文档中有一个真正的嵌套文档。分离这些文件是有代价的

连接示例 如果您使用“include_docs=true”查询视图,将获得链接的配置文档以及父文档本身。然后,您可以查询以获取更新的文档,将嵌套文档(1)与父文档(0)合并并过滤它们。

TLDR; 你不能这样做

细节 您的“嵌套”文档只能通过联接访问,但无法查询

本机执行此类查询的正确方法是在父文档中有一个真正的嵌套文档。分离这些文件是有代价的

连接示例
如果您使用“include_docs=true”查询视图,将获得链接的配置文档以及父文档本身。然后,您可以查询以获取更新的文档,将嵌套文档(1)与父文档(0)合并并过滤它们。

加入后,我确实能够过滤文档。谢谢你澄清这一点。我确实能够在加入后过滤文档。谢谢你澄清这一点。
function (doc) {
    if (doc.type === "A") {
        emit([doc.updated,0]);
        emit([doc.updated,1],["_id":doc.configuration_id]);
    }
}