我把它发布到CouchDB-Users邮件列表中,但我想我会把网络扩大一点.
[由于stackoverflow的新用户垃圾邮件规则导致链接被破坏:-(]
希望你们中的一个聪明的人可以提供帮助(或者至少有人可以明确地告诉我我要做的事情是不可能的,而且我将不得不考虑替代方案......我听说MySQL正在接受( - :) .
背景信息:我在这里设置了一个示例数据库:scoates-test.couchone.com/_utils/database.html?follow/scoates-test.couchone.com/follow
我有两种类型的文件.type = user和type = asset.
示例用户:scoates-test.couchone.com/_utils/document.html?follow/c988a29740241c7d20fc7974be05f67d
示例资产:scoates-test.couchone.com/_utils/document.html?follow/c988a29740241c7d20fc7974be061d62
用户可以关注其他用户(type =用户文档的"关注"字段).上面的示例用户(username = bob)是"跟随"2个用户:
"following": [
"c988a29740241c7d20fc7974be05ec54", // username=aaron
"c988a29740241c7d20fc7974be060bb4" // username=dale
]
Run Code Online (Sandbox Code Playgroud)
资产由特定用户拥有.以上示例资产归c988a29740241c7d20fc7974be061d62所有(用户名= bob).
希望这是有道理的.
我想请求属于bob跟随的用户的资产(aaron和dale),我不能把手指放在允许这个的视图代码上.我可以轻松地发出属于c988a29740241c7d20fc7974be05f67d的所有资产.
我可以在两个请求中做到这一点.首先,我向CouchDB询问c988a29740241c7d20fc7974be05f67d,然后将以下内容作为"键"发布到返回属于这些键的资产的视图,但是您会注意到我的type = assets文档也有一个"when"字段,并且我希望能够通过发出[doc.owner,doc.when]作为密钥,然后使用startKey/endKey来订购.因此,我认为密钥的POST已经出来了.
我可以加入应用程序端(查询以下密钥,为每个密钥发出一个请求,然后在应用程序端排序),但这会严重破坏分页(我需要为每个密钥请求pageSize的限制)以下),并且非常快速地失控(如果用户跟踪1000个用户,那么每页有10,000个记录).
这些解决方案都不适合我.我想在 CouchDB中做到这一点.
我真的很难过.请帮忙.
小号
根据我之前的问题的一个很好的答案,我已经部分解决了我与CouchDB的问题.
这导致了一种新观点.
现在,我需要做的下一件事是在按日期排序时从此视图中删除重复项.
例如,以下是我查询该视图的方式:
GET http://scoates-test.couchone.com/follow/_design/asset/_view/by_userid_following?endkey=[%22c988a29740241c7d20fc7974be05ec54%22]&startkey=[%22c988a29740241c7d20fc7974be05ec54%22,{}]&descending=true&limit=3
Run Code Online (Sandbox Code Playgroud)
结果如下:
HTTP 200 http://scoates-test.couchone.com/follow/_design/asset/_view/by_userid_following
http://scoates-test.couchone.com > $_.json.rows
[ { id: 'c988a29740241c7d20fc7974be067295'
, key:
[ 'c988a29740241c7d20fc7974be05ec54'
, '2010-11-26T17:00:00.000Z'
, 'clementine'
]
, value:
{ _id: 'c988a29740241c7d20fc7974be062ee8'
, owner: 'c988a29740241c7d20fc7974be05f67d'
}
}
, { id: 'c988a29740241c7d20fc7974be068278'
, key:
[ 'c988a29740241c7d20fc7974be05ec54'
, '2010-11-26T15:00:00.000Z'
, 'durian'
]
, value:
{ _id: 'c988a29740241c7d20fc7974be065115'
, owner: 'c988a29740241c7d20fc7974be060bb4'
}
}
, { id: 'c988a29740241c7d20fc7974be068026'
, key:
[ 'c988a29740241c7d20fc7974be05ec54'
, '2010-11-26T14:00:00.000Z'
, 'clementine'
]
, value: …Run Code Online (Sandbox Code Playgroud) 有人可以向我解释一下吗?
$ set -x
$ export X="--vendor Bleep\ Bloop"; echo $X
+ export 'X=--vendor Bleep\ Bloop'
+ X='--vendor Bleep\ Bloop'
+ echo --vendor 'Bleep\' Bloop
--vendor Bleep\ Bloop
$
Run Code Online (Sandbox Code Playgroud)
具体来说,为什么echo行插入'我没有要求的字符,为什么它会使字符串看起来没有终止?
我有一个MongoDB查询,我正在尝试优化.我创建了一个与查询中的字段匹配的索引,但我似乎无法让MongoDB的查询规划器在没有显式的情况下使用索引hint(),即使nscanned和millis对于提示版本更好.
这是索引,查询(有和没有提示),以及详细解释:
http://paste.roguecoders.com/p/4face5649612e840da04c5fea0491c9b.txt
另外一点信息:这个索引在一个大型集合中,在一个副本集中,所以我使用离线方法构建了索引.它现在存在于所有节点中.
(最初发布在MongoDB-User上.)