我刚才注意到在Couchdb 2.0 的发行说明中,提到Mango查询建议用于新的应用程序.还有人提到,Mango索引显然比javascript查询快2到x10,这让我感到很惊讶,因此我有很多问题:
我们建议所有新应用都默认使用Mango.
我主要关注的是一方面有关芒果的一些见解,另一方面,概述芒果和地图/减少应该如何在2.x时代共同生活.
我有一个芒果查询:
{
"selector": {
"age":{
"$eq": 22
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道满足此条件的文档数量。
我知道我们可以使用 map reduce 函数来实现这一点,但是有什么方法可以通过使用 mango 查询来做到这一点,例如在查询本身中使用诸如“count”之类的键,就像我们对“sort”和“fields”所做的那样。
我正在通过 rest 客户端触发 mango 查询,并且我想要文档数作为查询的响应。
我正在使用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落入同一个篮子?)"目前不使用任何索引".
谢谢!
我在沙发数据库中使用 Mango 查询几乎每个查询来查找文档。在这里,我在获取与给定条件匹配的所有文档时遇到问题。问题是 mango 查询的默认限制是 25(意味着每个查询获取 25 个文档)并且我的数据库中有很多文档,我没有确切的文档数。我无法在 mango 查询中对限制进行硬编码,因为我不知道文档的上限,而且我认为对限制进行硬编码不是一个好主意。任何人都可以帮我解决这个问题吗?我怎样才能将限制设置为无限制,或者有没有其他方法来处理这种情况?
我有以下文件:
{ _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.
例:
如果我想要来自该工地的所有内容,我应该能够检索所有这些文档.
通常我会添加一个worksite_id给我type:document和type:signature.但是,由于各种原因,工地可能会在项目中发生变化.
我想知道是否有办法创建索引或做一些我不想要显示这些相似之处的东西.
这感觉就像它在正确的道路上,但解释将文档放在其他文档中,我只是想让它们分开.
任何帮助,将不胜感激.
我用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.我需要总行分页.我怎么得到这个?
许多年前,我们启动了一个项目来管理研究项目的半结构化信息。我们用的是CouchDB,当时我们可以方便的调用以美元符号($)开头的条目的必填字段{"id": 123, "$type": "entry", "$owners": [ "somebody"],... } 我必须澄清,当时 CouchDB 还不存在 Mango。现在我想运行查询来查找数据库中“$type”为“entry”的所有条目。但 Mango 会抛出错误,因为“$type”不是运算符。
{“$type”:“条目”}
有人知道一种方法来规避这个问题,而不需要修复我的数据库上的名称吗?
有没有办法摆脱名称中的美元符号?
我的文档有这样的结构:
{
"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'?
我有一个沙发数据库,里面装满了这种形式的条目
{
...
"templates" :[
{"template_id":"1"}
{"template_id":"2"}
{"template_id":"3"}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个 mango 查询,该查询将查找具有包含具有特定 template_id 的对象的模板的所有条目。我知道可以使用视图,但如果可能,我想使用芒果查询
我希望能够在我的文档中搜索其中没有该项目的每个项目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进行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)
或者多个索引在构建查询时选择正确的索引?
获得最快搜索结果的正确方法是什么?
我需要一些关于在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中。
假设我的一些文档具有以下结构:
{
"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".
这甚至是芒果的用例还是应该坚持观点?