Я использую Python и MongoEngine, чтобы попытаться запросить приведенный ниже документ в MongoDB.
Мне нужен запрос для эффективного получения документов, только если они содержат «Ключевые слова» встроенных документов, которые соответствуют следующим критериям :
- Отфильтрованные ключевые слова, где свойство SFR - LTE '100000'
- СУММ отфильтрованных ключевых слов
- Возвращает родительские документы, где СУММ ключевых слов соответствует критерий больше, чем '9'
Пример структуры:
{
"_id" : ObjectId("5eae60e4055ef0e717f06a50"),
"registered_data" : ISODate("2020-05-03T16:12:51.999+0000"),
"UniqueName" : "SomeUniqueNameHere",
"keywords" : [
{
"keyword" : "carport",
"search_volume" : NumberInt(10532),
"sfr" : NumberInt(20127),
"percent_contribution" : 6.47,
"competing_product_count" : NumberInt(997),
"avg_review_count" : NumberInt(143),
"avg_review_score" : 4.05,
"avg_price" : 331.77,
"exact_ppc_bid" : 3.44,
"broad_ppc_bid" : 2.98,
"exact_hsa_bid" : 8.33,
"broad_hsa_bid" : 9.29
},
{
"keyword" : "party tent",
"search_volume" : NumberInt(6944),
"sfr" : NumberInt(35970),
"percent_contribution" : 4.27,
"competing_product_count" : NumberInt(2000),
"avg_review_count" : NumberInt(216),
"avg_review_score" : 3.72,
"avg_price" : 210.16,
"exact_ppc_bid" : 1.13,
"broad_ppc_bid" : 0.55,
"exact_hsa_bid" : 9.66,
"broad_hsa_bid" : 8.29
}
]
}
Исходя из исследований, которые я проводил, я считаю, что запрос агрегированного типа может подойти что я пытаюсь сделать.
К сожалению, будучи новичком в MongoDB / MongoEngine, я изо всех сил пытаюсь понять, как структурировать запрос, и не смог найти пример, похожий на то, что я пытаюсь сделать (КРАСНЫЙ ФЛАГ ВПРАВО? ???).
Я нашел пример агрегата, но не уверен, как структурировать в нем свои критерии, может быть, что-то вроде этого приближается, но не работа.
pipeline = [
{
"$lte": {
"$sum" : {
"keywords" : {
"$lte": {
"keyword": 100000
}
}
}: 9
}
}
]
data = product.objects().aggregate(pipeline)
Любое руководство будет очень признательно.
Спасибо, Бен