【问题标题】:Using IS NULL in PyMongo在 PyMongo 中使用 IS NULL
【发布时间】:2019-12-15 10:44:22
【问题描述】:

我正在尝试在我的 pymongo 查询中执行 'd': None。但是当我做None。我没有得到任何结果。

我的 SQL:

SELECT date, a, vt, b, c, d 
   ,SUM(theSum) AS theSum 
   FROM table
   where date between '2019-07-08' and '2019-08-08' 
   AND a in ( 'abc', 'xyz')
   AND c IN ('qwe')
   AND b IS NOT NULL
   AND (d IN ('yo') OR d IS NULL)
   group by 1,2,3,4,5,6
   order by theSum DESC
   LIMIT 25

PyMongo:

{'$match': {
                '$and': [{
                    'date': {
                        '$gte': sd,
                        '$lte': ed
                    },
                    'a': { '$in': a },
                    'b': {'$ne': None},
                    'c': { '$in': c },
                },  {
                    '$or': [{
                        'd': {'$in': d}
                    }, {'d': None
                    }]
                }]
            }
        }
        {
            '$group': {
                '_id': {
                    'a': '$a',
                    'vt': '$vt',
                    'b': '$b',
                    'c': '$c', 
                    'd': '$d'
                },
                'theSum':{
                    '$sum': '$theSum'
                }
            }
        }, {
            '$project': {
                '_id': 0,
                'a':'$_id.a',
                'vt': '$_id.vt',
                'b': '$_id.b',
                'c': '$_id.c', 
                'd': '$_id.d',
                'theSum': '$theSum'     
            }
        }, {
            '$sort': { 'theSum': -1 }
        }, {
            '$limit': 25
        }
        ])

我在 SQL 中查询时得到 43 条记录,但在查询 pymongo 代码时得到 0 条记录。我在 pymongo 中做错了什么。

【问题讨论】:

    标签: python sql django mongodb pymongo


    【解决方案1】:

    您应该能够在查询中使用 None - 您可能希望查看括号 - 具体来说,在这里:

    '$or': [{
    'd': {'$in': d}
     }, {'d': None
     }]
    

    “{'d': None”前面有一个括号,而不是后面。

    【讨论】:

      猜你喜欢
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      相关资源
      最近更新 更多