Random Field Query in MongoDB Collection

  • Share this:

Code introduction


This function randomly selects a field from a MongoDB collection and queries all documents where that field has a randomly selected value.


Technology Stack : PyMongoEngine, pymongo, random, Q, Document

Code Type : Query function

Code Difficulty : Intermediate


                
                    
def random_document_query(collection, random_field):
    from pymongo import ASCENDING
    from mongoengine import Q, Document

    # This function queries a MongoDB collection for documents where a specified field has a random value.
    # The field is randomly selected from the fields available in the collection's Document class.

    # Get all fields from the Document class
    fields = [field.name for field in Document._document_class_fields[collection.__name__]]

    # Select a random field to query on
    random_field = fields[random.randint(0, len(fields) - 1)]

    # Generate a random query condition
    random_value = collection.objects.get().first()[random_field]  # Get a random value from the first document
    query = Q(**{random_field: random_value})

    # Execute the query
    result = collection.objects(query).order_by(ASCENDING).limit(5)

    return result