CouchDB 服务器中$elemMatch的索引

plicqrtu  于 2023-01-22  发布在  CouchDB
关注(0)|答案(1)|浏览(224)

我的CouchDB文档包含一个数组字段,这是一个简化的示例:

{
    "organizations": [
        { "id": "Org 1" },
        { "id": "Org 2" }
    ]
}

我想使用以下查询查找包含组织Org 1的所有文档:

{
    "selector": {"$elemMatch": {"id": "Org 1"}}
}

有办法用索引吗?我试过了

{
    "fields": ["organizations.[].id"]
}

这似乎没有任何影响,我收到了相同的"no matching index found"警告。

v440hwme

v440hwme1#

使用标准的基于JSON/视图的索引,您无法为$elemmatch构建有用的索引,请参见Couchdb documentation for json index definition is unclear on support for indexing array fields #1388
虽然您可以对整个数组或逐个元素进行索引,但也不能为匹配任何数组位置中的元素的文档生成连续的键列表。
如果你用cloudant的插件构建couchdb,你可以使用支持$elemmatch的文本索引,但是它们有不同的特性,我建议你看看this article和之前问题中的其他链接。

相关问题