匹配所有内容的pymongo查询运算符

时间:2015-09-24 21:04:38

标签: mongodb mongodb-query pymongo

我正在编写一个pymongo查询表达式,我想使用一个匹配所有内容的运算符(无论该字段是否存在)。

例如,我想找到x的值,它使以下两个查询等效:

collection.find({'a': 2, 'b': x})
collection.find({'a': 2})

我知道这样做的最好方法是简单地使用第二个查询。由于超出本文范围的原因,在我的情况下是不可能的,所以我想找出x的值。

我想过像

这样的事情
x = {'$ne': <some large random number unlikely to occur>}

但它们看起来并不优雅。

2 个答案:

答案 0 :(得分:1)

如果您必须保持查询规范的结构,那么就没有可以帮助您的操作员,您将不得不求助于您提到的黑客攻击。

如果您放宽约束以便必须有另一个字段,那么您有一些选择,但它不必使用b作为其键。例如:

collection.find({
    'a': 2,
    '$or': [{'b': {'$exists': true}}, {'b': {'$exists': false}}]
})

......但我知道这不是你所要求的。

答案 1 :(得分:0)

以下是我将使用的查询:

db.collection.find({'a': 2, 'b': {$in: [null, false, /.*/]}})

如果'b'为空(不存在)或任何值(正则表达式匹配所有值),它将匹配。