gpt4 book ai didi

views - CouchDB "Join"两个文件

转载 作者:行者123 更新时间:2023-12-03 23:50:07 25 4
gpt4 key购买 nike

我有两个文件看起来有点像这样:

Doc
{
_id: AAA,
creator_id: ...,
data: ...
}

DataKey
{
_id: ...,
credits_left: 500,
times_used: 0,
data_id: AAA
}

我想要做的是创建一个 View ,它允许我传递 DataKey id (key=DataKey _id) 并获取 DataKey 和 Doc 的信息。

我的尝试:

我首先尝试在 Doc 中嵌入 DataKey 并使用如下映射函数:
function (doc)
{
if (doc.type == "Doc")
{
var ids = [];
for (var i in doc.keys)
ids.push(doc.keys[i]._id);

emit(ids, doc);
}
}

但是我遇到了两个问题:
  • 每个 DataKey 可以有多个
    文档使用 startkey=[idhere...]
    而 endkey=[idhere..., {}] 没有
    工作(仅在 key 发生时工作
    成为数组中的第一个)。
  • 所有数据键都必须是唯一的,我不希望制作像 {_id = datakey} 这样的单独文档来保留键。

  • 有谁知道我如何实现这一目标?如果有任何不清楚的地方,请告诉我。

    -----编辑-----

    我忘了提到在我的应用程序中我不知道 Doc ID 是什么,所以我需要能够搜索 DataKey 的 ID。

    最佳答案

    我想你想要的是

    function (doc)
    {
    if (doc.type == "Doc")
    {
    emit([doc._id, 0], doc);
    }

    if(doc.type == "DataKey")
    {
    emit([doc.data_id, 1], doc);
    }
    }

    现在,使用 key=["AAA"] 查询 View 您将看到所有文档的列表。第一个将是真正的“Doc”文档。其余的将是引用第一个文档的“DataKey”文档。

    这是一种常见的技术,称为 CouchDB view collation .

    关于views - CouchDB "Join"两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6380045/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com