这是我在MongoDB中的对象结构,View JSON structure here
{
"id": 1234,
"hotel_id": 1,
"data":[
{
"date":"2019-06-21",
"price": "150",
"updated_at":"2019-05-20"
},
{
"date":"2019-06-22",
"price": "155",
"updated_at":"2019-05-20"
},
{
"date":"2019-06-23",
"price": "157",
"updated_at":"2019-05-20"
},
{
"date":"2019-06-24",
"price": "159",
"updated_at":"2019-05-21"
},
{
"date":"2019-06-25",
"price": "159",
"updated_at":"2019-05-22"
},
{
"date":"2019-06-26",
"price": "159",
"updated_at":"2019-05-23"
}
]
}
我想过滤具有update_at> 2019-05-21
(x日期)的记录。
是否可以在两个特定日期之间获取数据,例如我想要日期在2019-06-21
和2019-06-23
之间的数据,而不希望获取其他记录。
答案 0 :(得分:0)
使用当前的设计,您将不得不使用汇总,我真的不知道您的产品是什么,但这对我来说有点不对劲,我认为(如果可能)您应该考虑重新构建数据
话虽如此,我会这样:
db.collection.aggregate(
[
{
"$addFields" : {
"temp" : {
"$objectToArray" : "$data"
}
}
},
{
"$match" : {
"temp.v.updated_at" : {
"$gt" : "2019-05-21"
}
}
}
],
);
编辑: 计算记录只需在$ group阶段加上$ sum:
{
$group: {
_id: null,
count: {$sum: 1}
}
}