Ber*_*aia 6 mongodb mongodb-query
我正在尝试在数组(“可用性”)中执行查询(在 MongoDB 中),该查询将返回元素(“可用”)等于 1 且在可用性内的日期之间的唯一酒店。
但是当正确返回“Mercato Hotel”时,查询返回所有酒店
我使用过但没有成功的查询:
{city: "Boston", availability: { $elemMatch: {availability: 1, date: {$gte: ISODate("2015-05-02T00:00:00.000+0000")}, date: {$lte: ISODate("2015-05-04T00:00:00.000+0000")}}}}
Run Code Online (Sandbox Code Playgroud)
MongoDb 中的 Json:
{
"_id" : ObjectId("55b302ee8debdf1a908cdc85"),
"city" : "Boston",
"hotel" : "Mercatto Hotel",
"availability" : [
{
"date" : ISODate("2015-05-01T00:00:00.000+0000"),
"available" : NumberInt(0)
},
{
"date" : ISODate("2015-05-02T00:00:00.000+0000"),
"available" : NumberInt(0)
},
{
"date" : ISODate("2015-05-03T00:00:00.000+0000"),
"available" : NumberInt(0)
},
{
"date" : ISODate("2015-05-04T00:00:00.000+0000"),
"available" : NumberInt(1)
}
]
}
{
"_id" : ObjectId("55b302ee8debdf1a908cdc89"),
"city" : "Boston",
"hotel" : "Hostel Villa",
"availability" : [
{
"date" : ISODate("2015-05-01T00:00:00.000+0000"),
"available" : NumberInt(1)
},
{
"date" : ISODate("2015-05-02T00:00:00.000+0000"),
"available" : NumberInt(0)
},
{
"date" : ISODate("2015-05-03T00:00:00.000+0000"),
"available" : NumberInt(0)
},
{
"date: ISODate("2015-05-04T00:00:00.000+0000"),
"available" : NumberInt(0)
}
]
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?
谢谢...
您的查询中有一个拼写错误,availability
而不是available
,应该是这样的:
{
city: "Boston",
availability: {
$elemMatch: {
available: 1,
date: {
$gte: ISODate("2015-05-02T00:00:00.000+0000"),
$lte: ISODate("2015-05-04T00:00:00.000+0000")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
布莱克七号更新
如果您只想获取availability
与查询匹配的数组元素,请添加投影:
{
"city": 1,
"hotel": 1
"availability.$.date": 1
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5470 次 |
最近记录: |