gpt4 book ai didi

javascript - 如何按条件查询具有最新日期的子文档

转载 作者:可可西里 更新时间:2023-11-01 10:39:01 24 4
gpt4 key购买 nike

<分区>

我正在尝试根据最新 子文档的条件找出查询文档的最佳方法。

所以我的数据可能是这样的:

[{
_id: '59bb31efae69726bd5fc9391',
name: 'Something',
terms: [
{
_id: '58e54f5aad59a6000cdcd590',
begDate: '2017-06-13T07:00:00.000Z',
endDate: '2018-01-01T07:59:59.999Z'
},
{
_id: '59bb32765e651d28909ed706',
begDate: '2018-01-01T08:00:00.000Z',
endDate: '2019-01-01T07:59:59.999Z'
}
]
}, {
_id: '59f20ddeef426f6bca3abbf1',
name: 'Something',
terms: [
{
_id: '59f20e35c8257b5b0f22d2a6',
begDate: '2018-06-13T07:00:00.000Z',
endDate: '2019-01-01T07:59:59.999Z'
},
{
_id: '59f20e9394c8108d9db33bf9',
begDate: '2019-01-01T08:00:00.000Z',
endDate: '2020-01-01T07:59:59.999Z'
}
]
}]

我想要的是获取所有上学期 endDate2019-01-01T07:59:59.999Z 的文档 这可以通过获取数组中的最后一项,或者更可靠地对项进行排序,然后获取最后一项来完成。

我可以看到如何用 $where 做到这一点但我知道如果我能找到另一种方法,它的性能会更高。

我还想补充一点,无论我在这里做什么,都会伴随其他查询参数。例如:

{
_id: {
'$in': [
ObjectId("591e5e37abddad14afe1b272"),
ObjectId("591e5e37abddad14afe1b123")
]
}
}

更新:

如前所述,这个问题有一个重复(我很难找到,因为所引用的问题很难理解)。话虽这么说,我不仅在寻找数组中的最后一个,而且还在寻找最近的(我同意问题正文中并不清楚)。我不是反对重复的问题引用,但为了让 future 的读者更容易,你会在接受的答案中找到 mongo 3.6+ 的干净解决方案以及对评论中另一个问题的引用如果您想在子文档中按日期查询,应该会有所帮助。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com