вставить массив в mongodb с помощью pymongo - PullRequest
1 голос
/ 27 мая 2020

Я пытаюсь добавить массив в mongdb с помощью pymon go

У меня есть другая программа, которая вернет что-то вроде

['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)

1 Ответ

2 голосов
/ 27 мая 2020

Во-первых, измените способ построения строки с метода tGenerator на ниже:

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

Во-вторых, вы можете использовать метод split для выполнения требуемого, поэтому ваша вставка будет выглядеть как-то как показано ниже:

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

Надеюсь, все вышеперечисленное сработает для вас.

...