Допустим, у меня есть "схема" mongodb, подобная этой:
offers: Schema = {
name: String,
validityStart: Date,
validityEnd: Date,
customized: [
{
validityStart: Date,
validityEnd: Date,
user: String
}
]
}
По словам: здесь у нас есть коллекция предложений, действительных между датами, указанными validityStart и validityEnd. Каждое предложение имеет подмассив, который определяет, что пользователь может иметь это предложение "настроенным", то есть иметь более длительное время использования.
Я могу запросить все предложения, доступные с
Offer.find({ $and: [{ validityStart: { $lte: today } }, { validityEnd: { $gte: today } }] })
, но если указано « user », мне нужно создать запрос, который покажет мне все предложения и покажет «настроенные» предложения путем фильтрации через поле пользователя.
Вот пример того, чего я хочу достичь: представьте, что у вас есть несколько предложений на декабрь
[
{
name: "Soccer Game 2020",
validityStart: "2019-12-1",
validityEnd: "2019-12-31"
},
{
name: "Golf Equipment",
validityStart: "2019-12-1",
validityEnd: "2019-12-31"
}
]
, но я позволю пользователю FOO быть ранней пташкой на 1 месяц для футбольной игры, у меня будет:
[
{
name: "Soccer Game 2020",
validityStart: "2019-12-1",
validityEnd: "2019-12-31",
customized:[
{
validityStart: "2019-11-1",
validityEnd: "2019-11-30",
user: "FOO"
}
]
},
---
]
Как вернуть для всех пользователей «родительские» даты, но для некоторых пользователей, указанных в настраиваемом массиве, их соответствующие даты? Например:
[
{
name: "Soccer Game 2020",
validityStart: "2019-11-1",
validityEnd: "2019-11-30"
},
{
name: "Golf Equipment",
validityStart: "2019-12-1",
validityEnd: "2019-12-31"
}
]
Я не знаю, как создать такой запрос.
Я готов изменить схему, я на ранней стадии разработки, поэтому это не проблема. .