【问题标题】:insert array into mongodb using pymongo使用 pymongo 将数组插入 mongodb
【发布时间】:2020-05-27 03:09:01
【问题描述】:

我正在尝试使用 pymongo 将数组添加到 mongdb 中

我有另一个程序会返回类似

['1 aksdfjas;dkfjsa;dfkj','2 ;alksdjf;askdjf;asdfjkasdf', '3 ;alksdfj;asdlkfj;asdfj']

我想将它们添加到插入中。

1)我想不出任何其他方法来做到这一点,所以我将它们转换为字符串并连接并尝试将它们添加到帖子中(一定有更好的方法吗?)

2)当我这样做时,我得到的不是欲望影响,而是

["'1 aksdfjas;dkfjsa;dfkj','2 ;alksdjf;askdjf;asdfjkasdf', '3 ;alksdfj;asdlkfj;asdfj'",]

多余的引号..我该如何纠正这个问题?

import pymongo
import time
import datetime
from random import *
from pymongo import MongoClient


client = MongoClient('mongodb://user:abc123@10.0.0.1:27017')

stringToStuff = 'blabh blah blahhhhh'

def createLoop():
    return randint(5,15)

def tGenerator(e):
    returnString = '' 
    for i in range(e):
        returnString +=  "'" + str(i+1) + " " + stringToStuff + "',"
    return returnString

db = client['pytest']
collection = db['test']
names = db.test.find()

collection2 = db['pytestResult']
for p in names:
    print(p['name'])
    name2 = p['name'] 

    #post = {"name":name2,"score":8,"date":datetime.datetime.now()}
    post = {
        "name":name2,
        "score":8,
        "date":datetime.datetime.now(),
        #”output”: ['1 aksdfjas;dkfjsa;dfkj','2 ;alksdjf;askdjf;asdfjkasdf', '3 ;alksdfj;asdlkfj;asdfj',]
        “output”: [tGenerator(createLoop())]
    }
    collection2.insert_one(post)

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    首先,将构建字符串的方式从tGenerator 方法更改为以下:

    returnString += str(i+1) + " " + stringToStuff + ","
    

    其次,您可以使用split 方法来完成所需的操作,因此您的插入将如下所示:

    post = {
        "name":name2,
        "score":8,
        "date":datetime.datetime.now(),
        "output": tGenerator(createLoop()).split(',')
    }
    collection2.insert_one(post)
    

    希望以上内容对你有用。

    【讨论】:

    • 是的,我错过了这个.. 非常感谢您指出这一点!巨大的帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 2016-04-01
    • 2016-04-23
    • 2021-02-01
    • 2015-09-27
    • 2015-01-05
    • 2018-10-26
    • 2020-09-15
    相关资源
    最近更新 更多