gpt4 book ai didi

node.js - MongoDb - 聚合 : How to $filter array documents with $elemMatch on a subdocument array?

转载 作者:太空宇宙 更新时间:2023-11-04 02:18:21 24 4
gpt4 key购买 nike

我正在尝试在聚合上使用 $filter 。我需要过滤一个名为“extras”的数组,该数组至少与他的一个“季节”与给定的“日期”相交。

这里是一个例子:

var from = new Date(2016, 0, 1);
var to = new Date(2016, 0, 5)

var projection = {
name: 1,
units: 1,
capacity: 1,
availabilitySeasons: { // This works
$filter: {
input: '$availabilitySeasons',
as: 'avSeason',
cond: {
$and: [{
$lte: ['$$avSeason.from', to]
}, {
$gte: ['$$avSeason.to', from]
}]
}
}
},
rate: 1,
features: 1,
extras: {
$filter: { // $elemMatch is no valid
input: '$extras',
as: 'extra',
cond: {
$elemMatch: ['$$extra.seasons', {
from: {
$lte: from
},
to: {
$gte: to
}
}]
}
}
}
};

在这种情况下可以使用 $filter 吗?我是否必须匆忙穿过 $unwind/$group hell ?

最佳答案

是的,你可以做到。对于以下示例,在 $and 条件内使用包含 $lte$gte 的条件。

$project: {
items: {
$filter: {
input: "$items",
as: "item",
cond: {
$and: [
$lt: [ "$$item.price", 100 ],
$gt: [ "$$item.price", 50 ]
] }
}
}
}

关于node.js - MongoDb - 聚合 : How to $filter array documents with $elemMatch on a subdocument array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34726211/

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