如何 运行 在 couchdb 视图上进行 mango 查询?
How to run a mango query on a couchdb view?
我使用 python 包 couchdb to access a Apache CouchDB。
我的任务是从数据库中过滤文档,并能够从过滤后的数据库文档中 select mango query。
我为我的数据库定义了一个视图,用于过滤掉不相关的文档。视图的 map 函数是一系列守卫(if 语句 return nothing if fulfilled)。最后一条语句发出带有 key=id
和 value=doc
:
的文档
function(doc) {
if(...) {
return
}
emit(doc._id, doc)
}
现在我想使用 mango 查询 select 视图中的一些文档。
但是视图的查找方法不存在。它只存在于数据库对象:
- https://couchdb-python.readthedocs.io/en/latest/client.html#couchdb.client.Database.find
- https://couchdb-python.readthedocs.io/en/latest/client.html#couchdb.client.Database.view
或者不知何故?
如果没有,我如何使用 couchdb 实现过滤器 + 芒果查找?
您不能对视图执行 mango 查询。您必须在这两个选项之间进行选择。
您实施的视图是一种按自定义顺序过滤和排序 文档的方法。然后您可以通过调用视图获取这些文档并获取您定义的确切顺序。
例如,您可以使用 GET / POST /{db}/_design/{ddoc}/_view/{view}
endpoint 指定特定范围的文档来获取(通过视图),这要归功于它的参数(主要是 startkey
、endkey
、descending
、limit
和 skip
).
但是您不能对视图执行芒果查询。 Mango 查询只能在整个数据库上进行。
在您的情况下,您可能应该使用芒果查询并将 indexes 放在可查询字段上以提高性能。
我使用 python 包 couchdb to access a Apache CouchDB。
我的任务是从数据库中过滤文档,并能够从过滤后的数据库文档中 select mango query。
我为我的数据库定义了一个视图,用于过滤掉不相关的文档。视图的 map 函数是一系列守卫(if 语句 return nothing if fulfilled)。最后一条语句发出带有 key=id
和 value=doc
:
function(doc) {
if(...) {
return
}
emit(doc._id, doc)
}
现在我想使用 mango 查询 select 视图中的一些文档。
但是视图的查找方法不存在。它只存在于数据库对象:
- https://couchdb-python.readthedocs.io/en/latest/client.html#couchdb.client.Database.find
- https://couchdb-python.readthedocs.io/en/latest/client.html#couchdb.client.Database.view
或者不知何故?
如果没有,我如何使用 couchdb 实现过滤器 + 芒果查找?
您不能对视图执行 mango 查询。您必须在这两个选项之间进行选择。
您实施的视图是一种按自定义顺序过滤和排序 文档的方法。然后您可以通过调用视图获取这些文档并获取您定义的确切顺序。
例如,您可以使用 GET / POST /{db}/_design/{ddoc}/_view/{view}
endpoint 指定特定范围的文档来获取(通过视图),这要归功于它的参数(主要是 startkey
、endkey
、descending
、limit
和 skip
).
但是您不能对视图执行芒果查询。 Mango 查询只能在整个数据库上进行。
在您的情况下,您可能应该使用芒果查询并将 indexes 放在可查询字段上以提高性能。