# community.mongodb.mongodb The [MongoDB](../../../applications/development/MongoDB.md) lookup runs the *find()* command on a given *collection* on a given *MongoDB* server. The result is a list of jsons, so slightly different from what PyMongo returns. In particular, *timestamps* are converted to epoch integers. ## Parameters | Parameter | Type | Description | | ------------------ | -------------------- | ----------------------------------------------------------------------------------------- | | **collection** | string / required | Name of the collection which the query will be made | | **connect_string** | string | Can be any valid MongoDB connection string, supporting authentication, replica sets, etc. | | **database** | string / required | Name of the database which the query will be made | | **filter** | dictionary | Criteria of the output | | **limit** | integer | How many results should be shown | | **projection** | dictionary | Fields you want returned | | **skip** | integer | How many results should be skipped | | **sort** | list / elements=list | Sorting rules. | ## Examples ```yml - hosts: localhost gather_facts: false vars: mongodb_parameters: #mandatory parameters database: 'local' collection: "startup_log" #optional connection_string: "mongodb://localhost/" # connection_string: "mongodb://username:password@my.server.com:27017/" # extra_connection_parameters: { "ssl" : True , "ssl_certfile": /etc/self_signed_certificate.pem" } #optional query parameters, we accept any parameter from the normal mongodb query. # filter: { "hostname": "u18" } projection: { "pid": True , "_id" : False , "hostname" : True } skip: 0 limit: 1 sort: [ [ "startTime" , "ASCENDING" ] , [ "age", "DESCENDING" ] ] tasks: - debug: msg="The PID from MongoDB is {{ lookup('mongodb', mongodb_parameters ).pid }}" - debug: msg="The HostName from the MongoDB server is {{ lookup('mongodb', mongodb_parameters ).hostname }}" - debug: msg="Mongo DB is stored at {{ lookup('mongodb', mongodb_parameters_inline )}}" vars: mongodb_parameters_inline: database: 'local' collection: "startup_log" connection_string: "mongodb://localhost/" limit: 1 projection: { "cmdline.storage": True } # lookup syntax, does the same as below - debug: msg="The hostname is {{ item.hostname }} and the pid is {{ item.pid }}" loop: "{{ lookup('mongodb', mongodb_parameters, wantlist=True) }}" # query syntax, does the same as above - debug: msg="The hostname is {{ item.hostname }} and the pid is {{ item.pid }}" loop: "{{ query('mongodb', mongodb_parameters) }}" - name: "Raw output from the mongodb lookup (a json with pid and hostname )" debug: msg="{{ lookup('mongodb', mongodb_parameters) }}" - name: "Yet another mongodb query, now with the parameters on the task itself" debug: msg="pid={{item.pid}} hostname={{item.hostname}} version={{ item.buildinfo.version }}" with_mongodb: - database: 'local' collection: "startup_log" connection_string: "mongodb://localhost/" limit: 1 projection: { "pid": True , "hostname": True , "buildinfo.version": True } # Please notice this specific query may result more than one result. This is expected - name: "Shows the whole output from mongodb" debug: msg="{{ item }}" with_mongodb: - database: 'local' collection: "startup_log" connection_string: "mongodb://localhost/" ```