indexing - CouchDB 中 $elemMatch 的索引
问题描述
我的 CouchDB 文档包含一个数组字段,一个简化的示例:
{
"organizations": [
{ "id": "Org 1" },
{ "id": "Org 2" }
]
}
我想Org 1
使用以下查询查找包含组织的所有文档:
{
"selector": {"$elemMatch": {"id": "Org 1"}}
}
有没有办法为它使用索引?我试过了
{
"fields": ["organizations.[].id"]
}
这似乎没有任何效果,我收到了同样的"no matching index found"
警告。
解决方案
使用基于标准 JSON/视图的索引,您无法为其构建有用的索引$elemmatch
,请参阅Couchdb 文档以了解 json 索引定义不清楚支持索引数组字段 #1388。
虽然您可以按元素索引整个数组或元素,但两者都不会为在任何数组位置的元素上匹配的文档生成连续的键列表。
如果您使用来自 cloudant 的插件构建 couchdb,您可以使用确实支持$elemmatch
但具有不同特征的文本索引。我建议在这个过去的问题中查看这篇文章和其他链接。
推荐阅读
- javascript - React- Lodash without() 方法在状态更改后呈现为空?
- android-studio - Android Studio 不接受 Android SDK 位置
- php - 如何在查询中添加 where between?
- python - 一起训练多个 tensorflow NN
- python - 使用 urlsplit 从 url 中获取域名
- git - 本地 Git 存储库的文件夹名称可以与存储在 Github 上的版本不同吗?
- android - 如何在 BottomSheetDialog 中为不同的状态 STATE_EXPANDED 和 STATE_COLLAPSED 设置视图?
- javascript - Javascript:可以访问返回 json 的 url 但在获取时发生错误
- python - Python闭包是否需要外部范围超出范围(即结束)
- leaflet - 修改传单库中的缩放中心?setZoomAround 有效但不是交互式的