我有一个问题,就是在MongoDB上使用数组中的范围过滤一个日期。
文件1:
{
"_id": {
"$oid": "61d406681512ba17533b35c9"
},
"items": [{
"_id": {
"$oid": "61d406681512ba17533b35cd"
},
"bookingEnd": {
"$date": "2022-04-22T00:00:00.000Z"
},
"bookingStart": {
"$date": "2022-03-19T00:00:00.000Z"
}
}, {
"_id": {
"$oid": "61d406681512ba17533b35cd"
},
"bookingEnd": {
"$date": "2022-07-22T00:00:00.000Z"
},
"bookingStart": {
"$date": "2022-06-19T00:00:00.000Z"
}
}],
"createdAt": {
"$date": "2022-01-04T08:33:44.958Z"
},
"updatedAt": {
"$date": "2022-01-04T08:33:44.958Z"
},
"__v": 0
}
文件2:
{
"_id": {
"$oid": "61d407c41512ba17533b35f7"
},
"items": [{
"_id": {
"$oid": "61d407c41512ba17533b35fb"
}
"bookingEnd": {
"$date": "2022-05-22T00:00:00.000Z"
},
"bookingStart": {
"$date": "2022-04-19T00:00:00.000Z"
}
}],
"createdAt": {
"$date": "2022-01-04T08:39:32.648Z"
},
"updatedAt": {
"$date": "2022-01-04T08:39:32.648Z"
},
"__v": 0
}
简历:
我有2份文件:
Mongo过滤器:
{ 'items.bookingStart': { $gte: ISODate('2022-03-01T00:00:00.000Z'), $lte: ISODate('2022-03-30T00:00:00.000Z') } }
猫鼬过滤器:
async findAll(params: AdminFilterOrderDto) {
const {
bookingStartInitial,
bookingStartFinal,
} = params;
const filter = {
'items.bookingStart': {
$gte: bookingStartInitial,
$lte: bookingStartFinal,
},
};
return await this.orderModel.find(filter);
}
应用的筛选器:
过滤器3和4给出错误的响应。
知道发生了什么吗?是MongoDB错误还是我执行查询错误?
谢谢你的帮助!
使用$elemMatch
db.collection.find({
items: {
$elemMatch: {
$and: [
{
"bookingStart": {
$gte: {
"$date": "2022-04-01T00:00:00.000Z"
}
}
},
{
"bookingStart": {
$lte: {
"$date": "2022-04-30T00:00:00.000Z"
}
}
}
]
}
}
})
Mongoplayground
> 每个对象表示一个重复发生的事件。该事件可以在多个日期发生。因此,请考虑以下内容: 我有一个日历在客户端,用户可以选择一个日期范围。 > 对所选日期范围的每个条目进行调用,并在客户端处理聚合。问题是会有大量的读取,因为我们会多次读取重叠的日期范围内的同一个列表对象。 尝试使用类似ElasticSearch/Algolia的服务来完成此操作 任何建议都会很有帮助!
b)“Units”字段包含带有“period”字段的子文档(日期对象数组),其中给定的日期位于数组中的第一和第二元素之间。 数据结构如下所示: 我尝试使用.find()和.aggregate()的各种组合,例如在periol数组上使用$project和$filter,在unit._id上使用$elemmatch之后使用$elemmatch,但是没有用--我得到了诸如“不能在数组上使用$filter
问题内容: 我正在尝试使用Spring查询Mongo存储库并过滤数组子文档。我已经参考过如何使用mongodb过滤子文档中的数组,但是想知道是否有更合适的方法或Java结构化方法来使用Spring。 我当前正在使用速记存储库接口符号,但是我正在获取未过滤数组的完整文档。 PersonRepository.java 人.java 地址.java 样本输入 预期产量 实际产量 问题答案: 好吧,在Sp
我正在尝试添加一个带有日期范围筛选器的服务器端datatable实现。筛选器不筛选任何数据。我不知道它坏在哪里。需要你帮我弄清楚我错在哪里。 这是剧本。 这是Html
问题内容: 我有一些文件: 如何按地区过滤/选择不同的文档? 在SQL中,我可以使用GROUP BY。我尝试了条件聚合,但返回的计数却不同。 感谢您的帮助!:-) 问题答案: 如果您的ElasticSearch版本为1.3或更高版本,则可以使用top_hits类型的子聚合,默认情况下,它将为您提供按查询分数排序的前三个匹配文档(此处为1,因为您使用match_all查询)。 您可以将参数设置为3以
我是新来的mongo。我有以下收藏。 文件: 请求: 文档集合中的typeId是文档类型的id,其中请求中的typeId是也可以为空的外部字段。如何获得以下输出。