2016-12-02 102 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")} 
    } 
}) 
相关问题