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

Mongodb 匹配所有内容的pymongo查询运算符,mongodb,mongodb-query,pymongo,Mongodb,Mongodb Query,Pymongo,我正在编写一个pymongo查询表达式,我想使用一个匹配所有内容的操作符(不管该字段是否存在) 例如,我想为x找到一个值,使以下两个查询等效: collection.find({'a': 2, 'b': x}) collection.find({'a': 2}) 我知道最好的方法是简单地使用第二个查询。原因远远超出了本文的范围,这在我的情况下是不可能的,所以我想计算x的值 我想到了这样的事情 x = {'$ne': <some large random number unlikely t

我正在编写一个pymongo查询表达式,我想使用一个匹配所有内容的操作符(不管该字段是否存在)

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

collection.find({'a': 2, 'b': x})
collection.find({'a': 2})
我知道最好的方法是简单地使用第二个查询。原因远远超出了本文的范围,这在我的情况下是不可能的,所以我想计算x的值

我想到了这样的事情

x = {'$ne': <some large random number unlikely to occur>}
x={'$ne':}

但是它们看起来不太优雅。

如果您必须保持查询规范的结构像这样,那么没有操作符可以帮助您,您将不得不求助于您提到的那种黑客

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

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

…但我知道这不是你想要的。

以下是我将使用的查询:

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

如果“b”为空(不存在)或是任何值(regex与所有值匹配),则它将匹配。

但是regex会拾取数值吗?不!刚刚测试过这一点,
$regex
的文档说:为查询中的模式匹配字符串提供正则表达式功能:(我想如果我们事先知道
b
的类型,对于某些类型的
b
,会有解决方案。但对于非SQL注入,不会匹配所有内容?;)哈:)不只是一个无聊的应用程序,在这个应用程序中,在查询文档中有一组可变的键是一件非常痛苦的事情