如何在pymongo的另一个查询结果中排除一个查询结果?

时间:2021-03-08 12:04:10

标签: python mongodb nosql pymongo

我有 3 种类型的条目:

  1. 好的条目 ({"good": ["cat1", "cat2"]})
  2. 坏条目 ({"bad": ["cat2", "cat3"]})
  3. 正常条目(没有好坏字段)

现在我的目标是选择一定数量 (max_count) 的条目(最好是好的,但绝不是坏的)。

假设我有这个查询:

good_jobs = my_db.find(
    {
        "a": "some_a",
        "b": "some_c",
        "good": "cat1" 
    }

).limit(max_count)

因此,这将找到类别“cat1”的所有“好”条目,提供一些 a 和 b。如果我有更多或等于 max_count 的好条目,我就完成了。

如果不是,我必须选择一些既不属于上述好的工作,也不属于剩余的坏工作的正常工作。

所以,我必须这样做:

normal_jobs = my_db(
    {
        "a": "some_a",
        "b": "some_b",
        "good": {
            "$nin": ["cat1"]
        },
        "bad": {
            "$nin": ["cat1"]
        }
    }
)

但是有什么办法可以说,后面的查询会从正式查询中排除结果吗?类似的东西:

normal_job = my_db(
    {
        "a": "some_a",
        "b": "some_b",
        "bad": {
            "$nin": ["cat1"]
        },
  --->  entries not in good jobs    
        
    }
)

正确索引对我很有帮助。

0 个答案:

没有答案