首页 > 解决方案 > Pymongo:如何在 MongoDB 中查询现有和非空字符串字段?

问题描述

这是对“如何查询现有的非空字段”问题的一个很好的回答。但我还需要检查一个字段是否不是空字符串。所以完整的查询需要检查:

最好的方法是什么?

标签: pythonmongodbmongodb-querypymongo

解决方案


使用{'$nin': [None, '']}

col.insert({})
col.insert({'test_field': None})
col.insert({'test_field': ''})
col.insert({'test_field': 'value'})

list(col.find({'test_field': {'$exists': True}}))
 [{u'_id': ObjectId('5b293fa7b5b55217c9afe7d0'), u'test_field': None},
  {u'_id': ObjectId('5b293fb1b5b55217c9afe7d2'), u'test_field': u''},
  {u'_id': ObjectId('5b293fb6b5b55217c9afe7d3'), u'test_field': u'value'}]

list(col.find({'test_field': {'$ne': None}}))
 [{u'_id': ObjectId('5b293fb1b5b55217c9afe7d2'), u'test_field': u''},
  {u'_id': ObjectId('5b293fb6b5b55217c9afe7d3'), u'test_field': u'value'}]

list(col.find({'test_field': {'$nin': [None, '']}}))
 [{u'_id': ObjectId('5b293fb6b5b55217c9afe7d3'), u'test_field': u'value'}]

推荐阅读