У меня есть документы в базе данных mongo в следующем формате: Здесь externalTimestamp находится в строковом формате. и цена в формате int
{
"_id":"ObjectId(""622f950e73043487031bb3ee"")",
"outerTimeStamp" : "14-Mar-2022",
"filtered":{
"data":[
{
"Price":14350,
"expiryDate":"17-Mar-2022",
"info1":{
"Price":14350,
"expiryDate":"17-Mar-2022",
},
"info2":{
"Price":14350,
"expiryDate":"17-Mar-2022"
}
},
{
"Price":14350,
"expiryDate":"17-Mar-2022",
"info1":{
"Price":14350,
"expiryDate":"17-Mar-2022",
},
"info2":{
"Price":14350,
"expiryDate":"17-Mar-2022"
}
},
......
....
]
}
}
Мое требование: мне нужны все элементы списка [с именем данные], имеющие цену == 14350, а весь документ anвыделенный текст должен иметь дату меньше, чем externalTimeStamp (17 марта 2022 г.)
Я использую следующий запрос, но он не дает мне желаемого результата.
data = db.find({
'$and' :
[
{'outerTimeStamp ': { '$lt': "15-Mar-2022" }},
{'filtered.data': { '$elemMatch': { 'Price': 14350 }}}
]
},
{'filtered.data' : 1}
)
Я также выполнил следующую команду, но эта вообще ничего не возвращает -
import dateutil
dateStr = '2022-03-15T00:00:00.000Z'
myDatetime = dateutil.parser.parse(dateStr)
data = db.find({
'$and' :
[
{'outerTimestamp': { '$lt': myDatetime }},
{'filtered.data.Price': 15000 }
]
},
{'filtered.data' : 1})
тем не менее, я получаю все элементы данные, хотя этот запрос соблюдает условие externalTimeStamp [ {'outerTimeStamp ': { '$lt': "15-Mar-2022" }}]
буду благодарен за помощь
С Уважением
попробуй с этим
data = db.find({
'$and' : [{'outerTimeStamp': { '$lt': "15-Mar-2022" }},
{'filtered.data.Price': 14350 } ]},
{'filtered.data' : 1})
Привет, я заметил, что externalTimeStamp установлен как строка: «14 марта 2022». Попробуйте формат даты, например ISODate("2022-03-15T00:00:00.000Z")
Нет! это не работает
Ваш запрос просто нуждается в небольшом изменении:
data = db.find({
'$and' :
[
{'outerTimeStamp ': { '$lt': "15-Mar-2022" }},
{'filtered.data': { '$elemMatch': { 'Price': 14350 }}}
]
},
{'filtered.data.$' : 1}
)
Ссылка: https://docs.mongodb.com/manual/reference/operator/projection/positional/#mongodb-projection-proj.-
Привет @MauriRamone, спасибо за ваш вклад, но этот я уже пробовал, и он также не дает требуемого результата.