我正在为 HR 服务构建 REST Api,需要实现与 Flask 和 Pymongo 一起使用的过滤器。我有一些过滤器,例如技术、经验、城市、框架等。我要做的是首先按技术过滤,如果在此过程中进一步满足某些条件,则按另一个条件过滤其查询。它有点像 Django 查询集,您可以进一步缩小范围。
但如果我能做到以下几点,我在 Mongo 文档上找不到它:
collection = db.my_collection.find({technologies: 'Python'})
narrowed_collection = collection.filter({framework: 'Flask'})
我知道我可以在一个地方运行第二个查询,但就我而言,如果满足某些条件,我发现这样做会更有效。至少,我肯定会在 Django 中这样做。
有什么解决办法吗?
编辑:
这是一份文件的副本:
{
"_id" : ObjectId("5d965a8b7ae4614204182cc2"),
"Name" : "John Doe",
"Rating" : "9870.31",
"Technologies" : [
"Java",
"HTML",
"Python",
"PHP",
"JavaScript",
"CSS"
],
"About" : "Flask, Django, React, Angular",
"Location": "London, UK",
"Experience"
}
假设我按技术、经验和位置进行过滤。但我也在寻找一个 Flask 框架,它“很高兴拥有”一个 React。这意味着我们不仅需要同时拥有它们(Flask 和 React)的人,而且首先我们需要拥有其中两个的人,然后是只有 Flask 的人。
假设我们按前 3 个字段过滤并从 100k 集合中得到 5k 项。接下来,为了实现这两个框架搜索,我正在运行一个复杂的聚合,所以我觉得在 5k 结果上运行聚合比在 100k 上运行聚合性能要好得多。