gpt4 book ai didi

join - CouchDB 相当于 Sql NOT IN?

转载 作者:行者123 更新时间:2023-12-04 15:46:00 28 4
gpt4 key购买 nike

我正在寻找与以下 LinQ 查询等效的 CouchDB JS View :

    var query =
from f in context.Feed
where !(from ds in context.DataSource
select ds.Feed_ID)
.Contains(f.ID)
select f;

其中 DataSources 有一个 Feeds 的外键。

总之:获取所有与数据源无关的提要

谢谢

最佳答案

您可以使用 view collation在 map 中加入提要和数据源:

function(doc) {
if (!doc.type) return;
if (doc.type == "feed") emit(doc._id, null);
if (doc.type == "ds" && doc.feed) emit(doc.feed, null);
}

并减少过滤那些具有链接到它们的数据源文档的提要ID。例如。使用 build-in _count并用 group_level 查询:
http://127.0.0.1:5984/test/_design/join/_view/not_in?group_level=1

对于数据库:
{"id":"1", "type":"feed"}
{"id":"2", "type":"feed"}
{"id":"3", "type":"ds", "feed":1}
{"id":"4", "type":"ds", "feed":1}}

会给你:
{"rows":[
{"key":"1","value":3},
{"key":"2","value":1}
]}

>1是那些引用数据源的提要文档。要获得没有数据源的纯提要列表,您可以使用 value>1 省略记录。在客户端或 list function .

编辑:带列表功能:
function(head, req) {
var row;
while (row = getRow()) {
if (row.value == 1)
send(row.key + "\n");
}
}

并查询:
http://127.0.0.1:5984/test/_design/join/_list/not_ds/not_in?group_level=1

您将通过提要文档获得最终结果,而无需引用数据源。它是带有 id 列表的纯文本,您也可以将其格式化为 JSON 数组。

关于join - CouchDB 相当于 Sql NOT IN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14413953/

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