community.mongodb.mongodb lookup – 从 MongoDB 查询信息

注意

此 lookup 插件是 community.mongodb 集合 (版本 1.7.8) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install community.mongodb。您需要满足其他要求才能使用此 lookup 插件,详情请参阅 要求

要在 playbook 中使用它,请指定: community.mongodb.mongodb

community.mongodb 1.0.0 中的新增功能

概要

  • ``MongoDB`` lookup 在给定的 MongoDB 服务器上的给定集合上运行 *find()* 命令。

  • 结果是一个 JSON 列表,与 PyMongo 返回的结果略有不同。特别是,*时间戳* 将转换为纪元整数。

要求

以下要求是在执行此 lookup 的本地控制器节点上需要的。

  • pymongo >= 2.4 (python 库)

关键字参数

这描述了 lookup 的关键字参数。这些是在以下示例中的值 key1=value1key2=value2 等: lookup('community.mongodb.mongodb', key1=value1, key2=value2, ...)query('community.mongodb.mongodb', key1=value1, key2=value2, ...)

参数

注释

collection

字符串 / 必需

将进行查询的集合的名称

connect_string

字符串

可以是任何有效的 MongoDB 连接字符串,支持身份验证、副本集等。

更多信息请访问 https://docs.mongodb.org/manual/reference/connection-string/

默认值: "mongodb://127.0.0.1/"

database

字符串 / 必需

将进行查询的数据库的名称

extra_connection_parameters

字典

要发送到 pymongo.MongoClient 的额外连接参数

查看示例以了解如何使用 SSL 证书连接到 mongo。

所有可能的参数都在这里: https://pymongo.readthedocs.io/en/stable/api/pymongo/mongo_client.html#pymongo.mongo_client.MongoClient

默认值: {}

filter

字典

输出条件

默认值: {}

limit

整数

应显示多少结果

projection

字典

您想要返回的字段

默认值: {}

skip

整数

应跳过多少结果

sort

列表 / 元素=列表

排序规则。

请使用字符串 ASCENDINGDESCENDING 设置顺序。

查看示例了解更多信息。

默认值: []

备注

示例

- hosts: localhost
  gather_facts: false
  vars:
    mongodb_parameters:
      #mandatory parameters
      database: 'local'
      collection: "startup_log"
      #optional
      connection_string: "mongodb://127.0.0.1/"
      # connection_string: "mongodb://username:[email protected]: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://127.0.0.1/"
          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://127.0.0.1/"
          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://127.0.0.1/"

返回值

描述

返回值

列表 / 元素=字符串

包含 MongoDB 查询结果的 JSON 列表。

返回:成功

作者

  • Marcos Diez (@marcosdiez)

提示

每个条目类型的配置条目具有从低到高的优先级顺序。例如,列表中较低的变量将覆盖较高的变量。