代码之家  ›  专栏  ›  技术社区  ›  Dennis Golomazov

pymongo:如何查询mongodb中现有的非空字符串字段?

  •  0
  • Dennis Golomazov  · 技术社区  · 6 年前

    这真是太棒了 answer 关于“如何查询现有的非空字段”的问题。但我还需要检查字段不是空字符串。所以完整的查询需要检查:

    • 字段存在
    • 字段不为空
    • 字段不是空字符串。

    最好的办法是什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Dennis Golomazov    6 年前

    使用 {'$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'}]