MongoDB$限制在$and内
我希望实现一个查询,返回一个包含两组数据的JSON 我所寻找的是检索40个订单,其中offerDate仍在未来($gte:today)和8个订单,offerDate在过去 目前我只有未来的40个,就像这样:MongoDB$限制在$and内,mongodb,aggregation-framework,aggregate,Mongodb,Aggregation Framework,Aggregate,我希望实现一个查询,返回一个包含两组数据的JSON 我所寻找的是检索40个订单,其中offerDate仍在未来($gte:today)和8个订单,offerDate在过去 目前我只有未来的40个,就像这样: const orders = await db.Order.aggregate([ { $match: { offerDate: { $gte: moment().startOf('day').toDate(), },
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
},
]
}
},
但那根本不起作用,我也找不到正确的方法
非常感谢 是一个管道阶段,不能在任何其他阶段中使用,因此您尝试的不是方法。您只需要两个单独的$匹配项
,后跟$限制
,操作员允许您这样做:
{
$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" ] }
}
}
这看起来很有可能,但有可能在同一个对象中同时得到两个结果吗?@victorgonal当然,请看我修改后的答案。您可以使用$unwind和$replaceRoot进一步操作