78 lines
No EOL
4.2 KiB
Markdown
78 lines
No EOL
4.2 KiB
Markdown
# community.mongodb.mongodb
|
|
The [MongoDB](../../../applications/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/"
|
|
``` |