Using JSONField keys in QuerySet.exclude() incorrectly returns documents with absent keys

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Minor - P4
    • None
    • Affects Version/s: None
    • Component/s: django
    • None
    • None
    • Python Drivers
    • None
    • None
    • None
    • None
    • None
    • None

      The expected (SQL three-valued logic) semantics: a row is returned by exclude(value__key=X) only when the key is present and != X, OR the whole value is SQL NULL. Rows where the key is absent should NOT be returned. MongoDB is currently treating absent keys as satisfying the exclusion.

      The test failures:

      • model_fields.test_jsonfield.TestQuerying.test_lookup_exclude
      • model_fields.test_jsonfield.TestQuerying.test_lookup_exclude_nonexistent_key
      • model_fields.test_jsonfield.TestQuerying.test_none_key_exclude

            Assignee:
            Tim Graham
            Reporter:
            Tim Graham
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: