Skip to content

item_frequencies returns {None: 1} if there's a single document with an empty list #761

Description

@shahafabileah

I noticed a problem where item_frequencies unexpectedly returns {None: 1}.

Here's my repro:

import mongoengine as me

import settings

me.connect('test', host=settings.MONGO_URL)

# Define a document type with a list field

class TestDocument(me.Document):
    id = me.SequenceField(primary_key=True)
    fruit = me.ListField(me.StringField())

# Insert one document that has a non-empty list

doc1 = TestDocument()
doc1.fruit = ['apple', 'orange']
doc1.save()

# Get the item_frequencies

item_frequencies = TestDocument.objects().item_frequencies('fruit')

print item_frequencies

# Change the document.  Make it an empty list.

doc1.fruit = []
doc1.save()

# Get the item_frequencies again

item_frequencies = TestDocument.objects().item_frequencies('fruit')

print item_frequencies

Here's the output:

(venv)~/work> python -m data.item_frequencies_test
{u'orange': 1, u'apple': 1}
{None: 1}

Note that if the list starts out as empty then the problem doesn't repro. It only repros if the document first has a non-empty list and then has that list cleared out.

Activity

  1. DavidBord commented on Nov 4, 2014

    @DavidBord
    Contributor

    The actual problem here is that setting doc1.fruit = [] actually unsets the attribute

  2. bagerard commented on Oct 7, 2024

    @bagerard
    Collaborator

    Closing as it's a duplicate of #2517

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions