当前位置: 首页 > 面试题库 >

在CouchDB中执行WHERE-IN查询

堵昊焱
2023-03-14
问题内容

我想通过调用CouchDB查询特定文档的列表。

使用SQL,我会做类似的事情

SELECT *
FROM database.table
WHERE database.table.id
IN (2,4,56);

在CouchDB中按_id一个字段或另一个字段执行此操作的诀窍是什么?


问题答案:

您需要使用viewskeys查询参数来获取具有指定集中键的记录。

function(doc){
    emit(doc.table.id, null);
}

接着

GET /db/_design/ddoc_name/_view/by_table_id?keys=[2,4,56]

要同时检索文档内容,只需将include_docs=True查询参数添加到您的请求中。

UPD
:也许您可能有兴趣通过此参考ID(2,4,56)来检索文档。默认情况下,CouchDB视图使用它们所属的文档“映射”发出的密钥。要调整此行为,您可以使用链接文档技巧:

function(doc){
    emit(doc.table.id, {'_id': doc.table.id});
}

现在要求

GET /db/_design/ddoc_name/_view/by_table_id?keys=[2,4,56]&include_docs=True

将返回行id字段点记录保存2456键和doc一个包含引用文档内容。



 类似资料:
  • 问题内容: 我正在尝试执行这样的查询: 问题是我要过滤的ID列表不是恒定的,并且每次执行时都必须不同。我还需要转义这些id,因为它们可能来自不受信任的来源,尽管我实际上将转义查询中的所有内容,而不管该来源的可信度如何。 节点的Postgres似乎与绑定参数专门工作:; 如果我具有已知数量的值(),这将起作用,但不能直接用于数组:,因为似乎对数组参数没有任何特殊处理。 根据数组中的项目数动态构建查询

  • 问题内容: 我在从Python内部执行某些SQL时遇到了问题,尽管类似的SQL在命令行中也能正常工作。 该表如下所示: 我可以从mysql命令行执行以下SQL查询,而不会出现问题: 但是,当我尝试在Python中执行相同操作时,没有任何行,而我希望有2行: 所以,问题是:应该如何Python代码进行修改,以选择那些S其中是? 顺便说一句,我注意到,如果我切换的角色和,我可以得到代码选择那些S其中是

  • 问题内容: 我已经开发了使用OR查询的系统: 与查询IN进行比较: MYSQL数据库中最好的查询是什么? 问题答案: 用于。 IN将使用索引。 否则(afaik)将不使用索引。 另外,这一点不容忽视,IN版本: 使用更少的代码 更容易维护 更容易理解 仅出于这些原因,我准备为获得代码质量而遭受一点性能损失,但实际上您也获得了性能。

  • 问题内容: 我正在重新编写一些PHP代码以使用PDO进行数据库访问,但是我遇到了“ WHERE … IN”查询问题。 我正在尝试根据检查表单上的哪些项目从数据库中删除某些内容。列表的长度和内容将有所不同,但是对于此示例,请想象是这样的: 然后查询如下所示: 当我这样做时,仅第一个ID被删除。(我认为它会抛出逗号及其后的所有内容。) 我也尝试过制作一个数组,但是它不会删除任何东西。 在PDO准备好的

  • 问题内容: 如何在Firebase Android中查询SQL IN子句?我想在Firebase Recycler适配器中使用它,以便根据某些条件仅检索某些子级。类似于以下语句: 我需要一个Firebase查询才能在Firebase Recycler适配器中使用它。 问题答案: 我找到了解决方案:我们无法使用。相反,我们必须创建可扩展的自定义适配器。 要将值传递给此适配器,首先我们必须使用检索数据

  • 问题内容: Go对于此SQL查询中的第二个参数想要什么。我正在尝试在postgres中使用查找。 我真正想要的是: 问题答案: 查询只是使用varargs来替换sql中的参数,因此,在您的示例中,您只需要执行 例如,这个和第二个示例的内容是动态的,那么您将 如果“ IN”部分具有可变的args,则可以执行(播放)