2016-12-02 81 views
-3

我在mongodb中有一組日期(從和到)。我需要檢查一次新預訂的入住和結帳是否在已設定的日期之間。我收集如下所示:在mongodb中查看其他2個日期之間的日期

"property_owner" : "[email protected]", 
"non_availability" : [ 
    { 
     "from" : "2015-12-12", 
     "to" : "2015-12-17" 
    }, 
    { 
     "from" : "2015-12-23", 
     "to" : "2019-12-27" 
    }, 
], 
"revenue" : 4004, 
"ratings" : 0, 
"owner" : null, 

我從用戶獲取搜索日期,我需要檢查,如果我的財產是給定的日期之間可用。

對於普通的變量,我能找到喜歡的日期如下:

property.find({ 
non-availability: { 
    $gte: ISODate("2015-12-10T00:00:00.000Z"), 
    $lt: ISODate("2015-12-12T00:00:00.000Z") 
    } 
}) 

我不能檢查不可用裏面的所有陣列。所以我可以使用$ gte和$ lte,如果它只是普通的字符串或變量。但我需要通過所有的數組,並能夠檢查。對不起,如果這個例子不符合標準。我對mongodb很陌生,所以在這方面有點困難。

謝謝你的幫助。

+1

這個問題並沒有表現出任何的研究工作=( –

+0

到目前爲止,你已經嘗試什麼? – Veeram

+0

該死..抱歉..我忘了補充一點,部分..生病更新 –

回答

0

存儲在數據庫中時,將字符串更改爲日期類型。

$elemmatch(query)返回行時,至少有一個嵌入式文檔與數組中的所有查詢條件匹配。

db.property.find({ 
    non_availability: { 
     $elemMatch: { 
      from: {$gte: ISODate("2015-12-10T00:00:00.000Z")}, 
      to: {$lt: ISODate("2015-12-12T00:00:00.000Z")} 
     } 
    } 
}) 

當某些組合中的嵌入式文檔條目滿足查詢條件中的所有條件時,此變體將返回行。

db.property.find({ 
    non_availability: { 
      from: {$gte: ISODate("2015-12-10T00:00:00.000Z")}, 
      to: {$lt: ISODate("2015-12-12T00:00:00.000Z")} 
    } 
}) 
相關問題