2017-05-10 29 views
2

我的文檔具有這樣的結構:芒果搜索(CouchDB的)

{ 
    "Calibration": { 
    "Presettings": { 
     "Date": [ 
     { 
      "Value": "2016-09-02 10:11", 
      "Type": "generated" 
     }, 
     { 
      "Value": "2016-09-05", 
      "Type": "schedule", 
      "Duration": "5" 
     } 
     ] 
    } 
    } 
} 

我該怎麼定義查詢對象的選擇機構來獲取所有文件的日期(值)小於或等於給定日期和Type=='generated'

回答

4

首先,您需要創建索引。我建議你在Calibration.Presettings.Date field上創建一個索引。

您可以使用下面的JSON對象來創建它:

{ 
    "index": { 
    "fields": [ 
     "_id", 
     "Calibration.Presettings.Date.[].Type" 
    ] 
    }, 
    "type": "json" 
} 

所以選擇會是這樣:

{ 
    "selector": { 
    "Calibration.Presettings.Date": { 
     "$elemMatch": { 
     "$and": [ 
      { 
      "Type": "generated" 
      }, 
      { 
      "Value": { 
       "$gte": "2016-09-01" 
      } 
      } 
     ] 
     } 
    } 
    } 
} 

我們在球場上Calibration.Pressettings.Date執行查詢這是一個陣列。由於它是一個數組,我們必須使用$ elemMatch運算符。

然後,我們有一個$和條件爲值和類型。

鍵入日期必須產生。可以使用運算符或簡單地使用這個簡單的語法:{"field":"value"}

最後,Date的值必須大於或等於X日期。我們可以使用運算符$ gte

+0

非常感謝。這有助於我比以前更瞭解更多。 – rolfn

+0

請接受這個答案,如果它幫助你。它可能會幫助未來的其他人 –