如何解决MongoDB $ limit中的$ and
我正在寻求实现一个查询,该查询将返回一个带有2组数据的单个JSON。
我要寻找的是检索40个仍在将来的offerDate订单($ gte:Today)和8个过去的offerDate订单。
目前我将来只有40个这样的人:
const orders = await db.Order.aggregate([
{
$match: {
offerDate: {
$gte: moment().startOf('day').toDate(),},{
$limit: 40,
我如何实现在$内添加限制并将两者结合在一起?
我尝试过:
$match: {
$and: [
{
offerDate: {
$gte: moment().startOf('day').toDate(),$limit: 40
},{
offerDate: {
$lte: moment().startOf('day').toDate(),$limit: 8
},]
}
},
但这根本不起作用,我找不到正确的方法。
非常感谢!
解决方法
$limit是一个管道阶段,不能在任何其他阶段中使用,因此您要尝试的方法不可行。您只需要两个单独的$matches
后跟$limit
,然后$facet运算符就可以做到这一点:
{
$facet: {
greater: [
{ $match: { offerDate: { $gte: moment().startOf('day').toDate() } } },{ $limit: 40 }
],lower: [
{ $match: { offerDate: { $lte: moment().startOf('day').toDate() } } },{ $limit: 8 }
]
}
},{
$project: {
all: { $concatArrays: [ "$greater","$lower" ] }
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。