根据嵌套子文档中的值筛选couchdb文档
我想创建一个map/reduce函数,它根据子文档中的嵌套值过滤文档。但是检索父文档 我有以下文件:根据嵌套子文档中的值筛选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": "",
{
"_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]);
}
}