标签: couchdb-mango

Couchdb芒果性能与地图减少视图

我刚才注意到在Couchdb 2.0 的发行说明中,提到Mango查询建议用于新的应用程序.还有人提到,Mango索引显然比javascript查询快2到x10,这让我感到很惊讶,因此我有很多问题:

  • Map/Reduce视图是否被淘汰?我希望答案是否定的,因为在我看来,Mango并没有涵盖Map/Reduce的所有用例(最简单的例子是Reduce本身),而且这种查询风格的灵活性似乎也更加有限.但由于建议,我更愿意提问:

我们建议所有新应用都默认使用Mango.

  • 我们知道Map/Reduce视图依赖于B树,但我无法在文档或邮件列表中找到有关Mango背后魔术的任何见解.芒果对我来说基本上是白魔法.然而,我可以说,深入了解javascript视图如何在幕后编入索引,对于避免陷阱,天真实现以及优化性能非常有帮助.有没有人对芒果如何运作有任何见解?索引B树也是吗?由于不再有设计文档,索引何时更新?性能提升来自哪里?(这些收益对我来说是违反直觉的,因为根据我的理解,javascript查询的性能来自Map函数的预先计算性质)

我主要关注的是一方面有关芒果的一些见解,另一方面,概述芒果和地图/减少应该如何在2.x时代共同生活.

couchdb couchdb-mango

11
推荐指数
2
解决办法
3185
查看次数

如何计算 Mango 查询返回的文档数

我有一个芒果查询:

{
  "selector": {
    "age":{
        "$eq": 22
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想知道满足此条件的文档数量。

我知道我们可以使用 map reduce 函数来实现这一点,但是有什么方法可以通过使用 mango 查询来做到这一点,例如在查询本身中使用诸如“count”之类的键,就像我们对“sort”和“fields”所做的那样。

我正在通过 rest 客户端触发 mango 查询,并且我想要文档数作为查询的响应。

couchdb cloudant couchdb-mango couchdb-2.0

9
推荐指数
1
解决办法
3486
查看次数

$ in/$或查询可以使用索引吗?

我正在使用CouchDB 2.0实例上的Mango查询,通过梦幻般的pouchdb-find.

有几次,我得到了可怕的no matching index found, create an index to optimize query time,即使我警告使用索引字段.

刚才我在选择"type": {"$in": ["a", "b"]}或等效时得到它"$or": [{"type": "a"}, {"type": "b"}],即使索引type存在.

谷歌搜索(cloudant查询文档,pouchdb-find文档,SO问题)没有帮助,在后者@nlawson说有些谓词($ne在上述问题,但也许我$in/ $or落入同一个篮子?)"目前不使用任何索引".

  • 如果我确实在同一条船上,那意味着什么?是否不可能使用某些谓词对查询使用索引限制芒果后端或pouchdb?
  • 我做错了什么/是否有一个索引解决方法来避免这种情况?
    • 更一般地说,是否有我可以阅读的文档,以深入了解索引的工作方式以及如何对其进行故障排除?

谢谢!

couchdb cloudant pouchdb couchdb-mango

6
推荐指数
1
解决办法
1489
查看次数

如何在不提供“限制”字段的情况下使用 Mango 查询 couchDB 获取无限文档?

我在沙发数据库中使用 Mango 查询几乎每个查询来查找文档。在这里,我在获取与给定条件匹配的所有文档时遇到问题。问题是 mango 查询的默认限制是 25(意味着每个查询获取 25 个文档)并且我的数据库中有很多文档,我没有确切的文档数。我无法在 mango 查询中对限制进行硬编码,因为我不知道文档的上限,而且我认为对限制进行硬编码不是一个好主意。任何人都可以帮我解决这个问题吗?我怎样才能将限制设置为无限制,或者有没有其他方法来处理这种情况?

couchdb couchdb-mango

6
推荐指数
1
解决办法
1831
查看次数

CouchDB索引用于连接文档之间的点

我有以下文件:

{ _id: "123", type: "project", worksite_id: "worksite_1" }
{ _id: "456", type: "document", project_id: "123" }
{ _id: "789", type: "signature", document_id: "456" }
Run Code Online (Sandbox Code Playgroud)

我的目标是运行查询,并且不可避免地对所有与之连接的文档进行过滤复制worksite_id: worksite_1.

例:

  1. 因为这个项目有我正在寻找的工地
  2. 文件有那个项目
  3. 签名有该文件

如果我想要来自该工地的所有内容,我应该能够检索所有这些文档.

通常我会添加一个worksite_id给我type:documenttype:signature.但是,由于各种原因,工地可能会在项目中发生变化.

我想知道是否有办法创建索引或做一些我不想要显示这些相似之处的东西.

感觉就像它在正确的道路上,但解释将文档放在其他文档中,我只是想让它们分开.

任何帮助,将不胜感激.

couchdb cloudant pouchdb couchdb-mango couchdb-2.0

6
推荐指数
1
解决办法
107
查看次数

分页的Couchdb 2.0/db/_find总行数

我用json数据发布请求(使用python请求lib):

    json_data = {
     "selector": {
        "year": {"$gt": 2010}
     },
     "fields": ["_id", "_rev", "year", "title"],
     "sort": [{"year": "asc"}],
     "limit": 10,
     "skip": 10
    }

    r = requests.post('http://127.0.0.1:5984/docs/_find',
                           json=json_data)
Run Code Online (Sandbox Code Playgroud)

响应没有total_rows.我需要总行分页.我怎么得到这个?

python couchdb python-requests couchdb-mango

5
推荐指数
0
解决办法
329
查看次数

如何在 couchdb mango 中定义字段名称以美元符号 ($) 开头的 _find 查询

许多年前,我们启动了一个项目来管理研究项目的半结构化信息。我们用的是CouchDB,当时我们可以方便的调用以美元符号($)开头的条目的必填字段{"id": 123, "$type": "entry", "$owners": [ "somebody"],... } 我必须澄清,当时 CouchDB 还不存在 Mango。现在我想运行查询来查找数据库中“$type”为“entry”的所有条目。但 Mango 会抛出错误,因为“$type”不是运算符。

{“$type”:“条目”}

有人知道一种方法来规避这个问题,而不需要修复我的数据库上的名称吗?

有没有办法摆脱名称中的美元符号?

couchdb couchdb-mango

5
推荐指数
1
解决办法
567
查看次数

芒果搜索数组

我的文档有这样的结构:

{
  "Calibration": {
    "Presettings": {
      "Date": [
        {
          "Value": "2016-09-02 10:11",
          "Type": "generated"
        },
        {
          "Value": "2016-09-05",
          "Type": "schedule",
          "Duration": "5"
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何定义查询对象的选择器部分以获取日期(值)小于或等于给定日期的所有文档Type=='generated'

arrays couchdb selector couchdb-mango

4
推荐指数
1
解决办法
2887
查看次数

Couchdb Mango 查询选择器对象数组中的对象

我有一个沙发数据库,​​里面装满了这种形式的条目

{
  ...
  "templates" :[
    {"template_id":"1"}
    {"template_id":"2"}
    {"template_id":"3"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个 mango 查询,该查询将查找具有包含具有特定 template_id 的对象的模板的所有条目。我知道可以使用视图,但如果可能,我想使用芒果查询

couchdb mongodb couchdb-mango

4
推荐指数
1
解决办法
3719
查看次数

Mango 查询不存在的值

我希望能够在我的文档中搜索其中没有该项目的每个项目hidden,或者如果有该项目,则仅在它不等于 时才获取它true。这可能吗?

我有以下选择,但遇到了错误的查询错误。

selector: {
  hidden: {$in: [null, false]}
}
Run Code Online (Sandbox Code Playgroud)

例如:

我想要退回这些

{_id: "1", hidden: false, name: "John" }
{_id: "2", name: "Jim" }
Run Code Online (Sandbox Code Playgroud)

这个不予退货

{_id: "3", hidden: true, name: "James" }
Run Code Online (Sandbox Code Playgroud)

couchdb pouchdb couchdb-mango

4
推荐指数
1
解决办法
2859
查看次数

Couchdb,Mango查询和索引

当用户想要搜索数据库时,我使用Couchdb进行Mango查询.他们可以搜索文档中的多个字段.

为了简化,我有一个包含三个字段的文档,所有这些字段都可以搜索以查找文档.

FieldOne: cow
FieldTwo: pig
FieldThree: dog
Run Code Online (Sandbox Code Playgroud)

为查询创建芒果索引时,我应该使用哪些字段?我应该用多个字段创建和索引吗?订单重要吗?

在字段中还定义了三种不同的文档类型(A,BC).我只需要搜索一个,是否可以从索引中排除其他类型以使其更快?

Field_Type: A
Run Code Online (Sandbox Code Playgroud)

能够针对视图运行索引以仅搜索我感兴趣的文档是有意义的.这可能吗?

示例索引

已知出现在查询中的字段上的一个索引

  {
       "index": {
          "fields": [
             "FieldOne"
          ]
       },
       "name": "foo-json-index",
       "type": "json"
    }
Run Code Online (Sandbox Code Playgroud)

多个索引,不确定是否使用?

 {
       "index": {
          "fields": [
             "FieldOne",
             "FieldTwo",
             "FieldThree"
          ]
       },
       "name": "foo-json-index",
       "type": "json"
    }
Run Code Online (Sandbox Code Playgroud)

或者多个索引在构建查询时选择正确的索引?

获得最快搜索结果的正确方法是什么?

indexing couchdb-mango couchdb-2.0

3
推荐指数
1
解决办法
3134
查看次数

CouchDB全文搜索

我需要一些关于在ouchdb中进行全文搜索的方向。是默认情况下它已在2.0中启用,还是必须重新构建启用它的ouchdb?

场景:这是一个文档管理系统,文档显示在网格中。我需要能够对结果进行排序。从map减少到弹性索引后,现在发生了几处更改,现在我尝试使用芒果查询。问题是排序不能给出预期的结果。

{
  "selector": {
    "directoryName": {
      "$eq": "mail\\test\\inbox"
    }},
    "sort": [{"subject": "asc"}]
}
Run Code Online (Sandbox Code Playgroud)

尝试按“主题”或其他文本字段进行排序,将结果与“索引逻辑”(例如,返回的排序主题:“此电子邮件...”,“您好...”,“此电子邮件”)混合。 ”,绝对不是我需要的东西。不记得分析器,令牌等是否与“怪异”搜索结果有关。例如,使用日期字段desc sort可以更好地工作,但是当显示从2017年到desc的文档(包含2016年和2015年的文档)时,我得到2014年文档的“入侵者”结果。

我为一些可能的文档排序字段创建了json类型的索引。创建文本类型索引不起作用。我不知道全文搜索可以解决我的“排序”问题,但是对于所有有关cloudant查询语言和全文搜索的参考,我认为此功能已包含在2.0中。

full-text-search couchdb gridview-sorting couchdb-mango

2
推荐指数
1
解决办法
4315
查看次数

用于深层嵌套JSON的Cloudant/Mango选择器

假设我的一些文档具有以下结构:

{  
   "something":{  
      "a":"b"
   },
   "some_other_thing":{  
      "c":"d"
   },
   "what_i_want":{  
      "is_down_here":[  
         {  
            "some":{  
               "not_needed":"object"
            },
            "another":{  
               "also_not_needed":"object"
            },
            "i_look_for":"this_tag",
            "tag_properties":{  
               "this":"that"
            }
         },
         {  
            "but_not":{  
               "down":"here"
            }
         }
      ]
   }
}
Run Code Online (Sandbox Code Playgroud)

是否有可以成功选择"i_look_for"具有该值的Mango JSON选择器"this_tag"?它在一个数组内(我知道它在数组中的位置).我也有兴趣过滤结果,所以我只得到 "tag_properties"结果.

我尝试了很多东西,包括$ elemMatch,但一切都回归"无效的json".

这甚至是芒果的用例还是应该坚持观点?

json cloudant couchdb-mango couchdb-2.0

0
推荐指数
1
解决办法
1273
查看次数