我正在尝试建立一个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之间的当前日期
更新: 我试过$ elemMatch,但仍然取回数组中的两个元素
db.getCollection('FacilityProfiles').find(
{"Packages" : { $elemMatch : { "PackageCode" : "G", "StartDate" : {$lte : new Date()}, "EndDate" : {$gte : new Date()} }}}
)