MongoDb查询currentdate在Mongo中的两个数据字段值之间

时间:2018-11-22 18:49:43

标签: mongodb between

我正在尝试建立一个mongo查询(如下),但没有得到任何结果,我的Mongo集合字段(如图所示)。我试图在Packaes.Tier = Gold上进行elemMatch,所以希望返回Packages数组,其中包含一个Gold Tier元素。

db.getCollection('FacilityProfiles').find({$and : [
    {"Packages" : {$elemMatch : {"Packages.Tier" : "Gold"}}}
    ]},
    {"Packages" : 1}
)

我也尝试了这些查询,但是它返回了两个元素:

db.getCollection('FacilityProfiles').find({$and : [
    {"Packages.StartDate" : {$lte : new Date}}
    ]},
    {"Packages" : 1}
)

db.getCollection('FacilityProfiles').find({$and : [
   {"Packages.StartDate" : {$lte : new Date}},
   {"Packages.EndDate" : {$gte : new Date}}
   ]},
   {"Packages" : 1}
)

db.getCollection('FacilityProfiles').find({$and : [
    {"ProfileLanguage" : "EN"},{"spctr_FacilityId" : "000018211"},
    {"Packages.StartDate" : {$lte : new Date},"Packages.EndDate" : {$gte : new Date}}    
    ]},
    {"Packages" : 1}
)

因此,根据我的Mongo集合值,可以构建一个查询,以仅从Packages数组中获取黄金包元素 我正在尝试仅获取Package元素,其中当前日期在开始日期和结束日期之间 实际上是StartDate和EndDate之间的当前日期

我的mongo收藏是: enter image description here

更新: 我试过$ elemMatch,但仍然取回数组中的两个元素

db.getCollection('FacilityProfiles').find(
    {"Packages" : { $elemMatch : { "PackageCode" : "G",  "StartDate" : {$lte : new Date()}, "EndDate" : {$gte : new Date()} }}}
)

0 个答案:

没有答案