我可以从python';登录mongoDB吗;逐行';?

我可以从python';登录mongoDB吗;逐行';?,python,mongodb,Python,Mongodb,目前,上面的代码成功地将我的日志文件(本例中为test.log)存储到mongodb中 但是,包含许多行的整个日志文件作为一个文档存储到mongodb中 由于我的日志文件是以行分隔的,有没有办法将日志文件逐行存储到mongodb中,以存储尽可能多的文档 我尝试过将它解析成行,但它是数组格式的,所以mongodb无法成功读取它 谢谢 日志样本: {“asctime”:“2019-11-19 04:12:06414”,“levelname”:“DEBUG”,“name”:“passlib.regis

目前,上面的代码成功地将我的日志文件(本例中为test.log)存储到mongodb中

但是,包含许多行的整个日志文件作为一个文档存储到mongodb中

由于我的日志文件是以行分隔的,有没有办法将日志文件逐行存储到mongodb中,以存储尽可能多的文档

我尝试过将它解析成行,但它是数组格式的,所以mongodb无法成功读取它

谢谢


日志样本:

{“asctime”:“2019-11-19 04:12:06414”,“levelname”:“DEBUG”,“name”:“passlib.registry”,“threadName”:“MainThread”,“message”:“registed'pbkdf2_sha256'handler:”}
{“asctime”:“2019-11-19 04:12:06459”,“levelname”:“INFO”,“name”:“werkzeug”,“threadName”:“main thread”,“message”:“*在0.0.0.0:5000上运行(按CTRL+C退出)”}
您的
read()
调用将整个文件读取到单个文档中。请尝试以下方法:

{"asctime": "2019-11-19 04:12:06,414", "levelname": "DEBUG", "name": "passlib.registry", "threadName": "MainThread", "message": "registered 'pbkdf2_sha256' handler: <class 'passlib.handlers.pbkdf2.pbkdf2_sha256'>"}
{"asctime": "2019-11-19 04:12:06,459", "levelname": "INFO", "name": "werkzeug", "threadName": "MainThread", "message": " * Running on 0.0.0.0:5000 (Press CTRL+C to quit)"}

迭代行数组,为每行生成一个新的
条目
,并
insert()
每个
条目
。或者,应该有一些等价的
insertMany()
,在这种情况下,您可以对数组执行
map()
,以生成
条目的数组,并将结果传递到
insertMany()
调用中,我将使用logstsh插件:您可以发布一个日志数据的小样本,看看这些行是什么样子的(很容易提出建议)。@prasad_u{“asctime”:“2019-11-19 04:12:06414”,“levelname”:“DEBUG”,“name”:“passlib.registry”,“threadName”:“MainThread”,“message”:“registed'pbkdf2_sha256”处理程序:“}{”asctime:”“2019-11-19 04:12:06459”,“levelname:“INFO”,“name:“werkzeug”,“threadName:“main thread”,“message:“*在0.0.0.0:5000上运行(按CTRL+C退出)”}很抱歉安排混乱,但这种json日志有很多行!每行之间用空格分隔\n@GiovaniSalazar这对我有用吗?
{"asctime": "2019-11-19 04:12:06,414", "levelname": "DEBUG", "name": "passlib.registry", "threadName": "MainThread", "message": "registered 'pbkdf2_sha256' handler: <class 'passlib.handlers.pbkdf2.pbkdf2_sha256'>"}
{"asctime": "2019-11-19 04:12:06,459", "levelname": "INFO", "name": "werkzeug", "threadName": "MainThread", "message": " * Running on 0.0.0.0:5000 (Press CTRL+C to quit)"}
import json
import pymongo
import pprint

if __name__ == "__main__":

    client = pymongo.MongoClient()
    db = client["logdb"]
    collection = db["logs"]
    with open("test.log", "r") as file:
        for line in file:              # python knows to iterate line by line
            line = line.rstrip()       # strip off the newline
            print(line)                # take a look
            doc = json.loads(line)     # convert the string to a doc
            pprint.pprint(doc)         # print doc
            collection.insert_one(doc) #insert, use insert_many() for better performance