5

http api を使用して ravendb をクエリしています (したがって、LINQ クエリは私の質問に対する解決策ではありません)。私の製品ドキュメントは次のようになります。

{
  "editDate": "2012-08-29T15:00:00.846Z"
}

そして私はインデックスを持っています:

from doc in docs.Product
select new { doc.editDate }

特定の日時より前にすべてのドキュメントをクエリしたい。次の構文を使用して DATE をクエリできます。

editDate: [NULL TO 2012-09-17]

ただし、時間コンポーネントもクエリする方法がわかりません。何か案は?

4

2 に答える 2

5

次を使用してクエリを実行できます。

 editDate: [NULL TO 2012-09-17T15:00:00.846Z]

その一部を気にする場合は、次を使用します。

 editDate: [NULL TO 2012-09-17T15:00]

次のように、クエリの一部をエスケープする必要がある場合があることに注意してください。

 editDate: [NULL TO 2012\-09\-17T15\:00]

これが機能するためには、フィールドが分​​析されていることを確認する必要もあります。Raven Studio - フィールドを追加 -> editDate で、インデックス作成を分析済みに設定します。

于 2012-09-20T11:04:46.020 に答える
-1

この問題を回避する 1 つの方法は、値を日付としてではなく、UNIX エポックからの秒数として保存することです。

これにより、簡単に比較できる数値が得られます。

私はjavascriptと瞬間のjsライブラリを使用しています:

{
  "editDate": "2012-08-29T15:00:00.846Z",
  "editDateUnix": moment("2012-08-29T15:00:00.846Z").unix()
}

任意の私のインデックス:

from doc in docs.Product
select new { doc.editDate, doc.editDateUnix }

と私の lucene クエリ:

"editDate: [NULL TO "+moment("2012-09-17").unix()+"]"
于 2012-09-18T08:45:39.230 に答える