如何使用Python将Ansible std_outlines输出JSON插入MongoDB中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Python将Ansible std_outlines输出JSON插入MongoDB中相关的知识,希望对你有一定的参考价值。
我正在我的剧本中运行以下任务
- name: get system info
shell: uname -r
register: uname_out
- debug: var=uname_out
when: conn_out is success
- name: copy
copy:
content={{ uname_out.stdout_lines }} dest={{inventory_hostname}}.json
我得到这样的JSON输出
["rhel", "linux", "7", "basevesrion"]
要将这些数据插入MongoDB,我正在编写脚本,如下所示
import json
from pymongo import MongoClient
fileName = "data.json"
print(fileName)
client = MongoClient('10.*.*.*',27017)
db = client['test']
collection_cmdbFact = db['facts']
with open(fileName,'r') as data_file:
data_json = json.loads(data_file.read())
collection.insert_one(data_json)
client.close()
我收到此错误
TypeError:文档必须是dict,bson.son.SON,bson.raw_bson.RawBSONDocument的实例,或者是从collections.MutableMapping继承的类型的实例
有人可以告诉我如何插入此数据吗?
答案
我进行了快速测试。效果很好:collection.insert_one(json.loads("{"a":1}"))
虽然这将返回您指出的确切错误:
collection.insert_one(json.loads("[{"a":1},{"a":2}]"))
如果您的文件包含一系列文档,则可能需要使用insert_many
:
collection.insert_many(json.loads("[{"a":1},{"a":2}]"))
以上是关于如何使用Python将Ansible std_outlines输出JSON插入MongoDB中的主要内容,如果未能解决你的问题,请参考以下文章