3

「日付」フィールドと「グループ」フィールドを持つドキュメントがあります。そして、これは私の見解です:

byDateGroup: {
  map: function(doc) {
    if (doc.date && doc.group) {
      emit([doc.date, doc.group], null);
    }
  }
}

これと同等のクエリは次のとおりです。

select * from docs where group in ("group1", "group2") order by date desc

この単純な解決策が頭に浮かびません。:(

4

3 に答える 3

1

パンカジ、発しているキーの順序を次のように切り替えます。

emit([doc.group, doc.date], doc);

次に、ビューを照会するときに開始キーと終了キーを渡すことができます。データを取得するグループごとに個別のクエリを実行する方が簡単な場合があります。データは日付順にソートされます。

現時点では外出中ですが、不明な場合は戻ってきたときに詳しく説明できます。

于 2012-04-13T23:59:37.653 に答える
0

なぜだめですか?

function(doc) {
  if (doc.date && ["group1", "group2"].indexOf(doc.group) !== -1)) {
    emit([doc.date, doc.group], null);
  }
}
于 2012-04-13T19:11:17.603 に答える
0

これには特定のビューが必要です。

byDateGroup1Group2: {
  map: function(doc) {
    if (doc.date && doc.group && (doc.group === "group1" || doc.group === "group2") {
      emit(doc.date, doc);
    }
  }
}

query を使用して(おそらくリスト関数で)クエリを実行しますdescending=true

于 2012-04-13T19:12:44.420 に答える