У меня тысячи документов в коллекции. Ниже приведен образец документа
{
_id: 12345,
createdDate: "2020-07-10",
cars: [
{
type: "Sedan",
engine: [
{
type: "Petrol",
power: 150,
brake: {
type: "Disc",
hasABS: false
}
},
{
type: "Petrol",
power: 190,
brake: {
type: "Drum",
hasABS: false
}
},
{
type: "Diesel",
power: 160,
brake: {
type: "Disc",
hasABS: true
}
}
]
},
{
type: "SUV",
engine: [
{
type: "Petrol",
power: 150,
brake: {
type: "Disc",
hasABS: false
}
},
{
type: "Petrol",
power: 190,
brake: {
type: "Drum",
hasABS: false
}
},
{
type: "Diesel",
power: 160,
brake: {
type: "Disc",
hasABS: true
}
}
]
}
]
}
Теперь я хочу найти автомобили, созданные в июле месяце, и объединить их, чтобы найти автомобиль с тормозами с абс.
Ниже был мой запрос:
db.getCollection('collection')
.find({
$and: [
{"createdDate": {"$gte": new Date("2020-07-01"), "$lt": new Date("2020-07-10")}},
aggregate(
{"$unwind": "$cars"},
{"$unwind": "$cars.engine"},
{"$match": {"cars.engine.brake.hasABS": true}},
{"$project": {"cars": 1}},
{"$group": {"_id": "$cars"}}
)
]
})
.pretty()
Когда я пытаюсь выполнить вышеуказанный запрос, я получаю сообщение об ошибке. Это как это должно быть сделано или есть лучший способ?