Skip to content

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

@shahafabileah

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.

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