を取得するには、次のようになります。CouchDBの、このMySQLを使用して、最後の10枚の文書
SELECT * FROM thetable ORDER BY id DESC LIMIT 10
私は「タイプ」を持つすべての文書のためのCouchDBでこれをどのように操作を行うことができます。「メッセージ」? (タイプですべての文書を引っ張っなし:メッセージ)
おかげ
を取得するには、次のようになります。CouchDBの、このMySQLを使用して、最後の10枚の文書
SELECT * FROM thetable ORDER BY id DESC LIMIT 10
私は「タイプ」を持つすべての文書のためのCouchDBでこれをどのように操作を行うことができます。「メッセージ」? (タイプですべての文書を引っ張っなし:メッセージ)
おかげ
は、すべてのドキュメントIDを放出するビューを作成します。ビューキーは自動的にソートに使用されます。
function(doc) {
if(doc.type && doc.type === 'message'){
emit(doc._id, null);
}
}
次にクエリを実行:あなたは完全な文書をしたいのでhttp://host/yourdb/_design/yourdesigndoc/_view/viewname?limit=10&include_docs=true&descending=true
、我々は、ビューの値としては何も含まれていませんでした。代わりに、include_docs=true
を追加して、すべてのドキュメントをビューエントリとして取得します。
同じことを組み込みビューも存在することに注意してください:http://host/yourdb/_all_docs?limit=10&include_docs=true&descending=true
PS:あなたは、デフォルトではCouchDBのソート多かれ少なかれ役に立たないレンダリングされますのIDとしてUUIDを使用するという事実を認識しておく必要がありが、あなたが本当に最新のドキュメントを入手したいのであれば。独自のインクリメンタルID(配布/レプリケーションについてはどうすればよいですか)を指定するか、ドキュメントが作成された時刻を保存してビューで使用する新しいフィールドを使用してください。
あなたのドキュメントはcreated
フィールド(すなわち、UNIXタイムスタンプは、JavaScript Date.now()あるいはRFC 3339のような文字列)を持っている場合は、これらの値にインデックスを構築することができます。我々はdoc._id自体を放出しないこと
function(doc) {
if(doc.type && doc.type === 'message' && doc.created){
emit(doc.created, null);
}
}
注:ここでは
は、時間ベースの図です。しかし、CouchDBは放出されたキーと値のペアごとに自動的にデータが入ったdoc._id
を保存していますので、もう一度include_docs=true
を使用して完全なドキュメントを取得できます。
クエリhttp://host/yourdb/_design/yourdesigndoc/_view/viewname?limit=10&include_docs=true&descending=true
ドキュメントのIDがすでに増分されている場合は、代わりのCouchDBのデフォルトのUUIDを、あなたも、例えば、あなただけのデフォルト_all_docsビューを使用することができ、ビューを定義する必要はありません
http://couchdb_host/your_db/_all_docs?limit=10&descending=true&include_docs=true
ありがとうございます。ただし、これを行うと、メッセージを含む10の最も古い文書が返されます。私は最新の10の文書が必要です。私がこれを行うと考えることができる唯一の方法は、すべてのドキュメントIDを取得し、最後の10個のIDをその結果セットから取り出し、IDを使用してドキュメントを直接呼び出します。正しい方法それ。 – Brian
私のPSは読んでいますか?あなたのdoc._idsがどのように生成/割り当てられるかによって異なります。おそらく、 'descending = false'に切り替えるか、あるいはあなたの文書に生成されたフィールドを追加してそれを使用する必要があります。 –
うわー、それはない、私は100回ハハを試したに違いないと誓って...私はそれを台無しにどこにもないアイデア。ありがとう! – Brian