正在try 使用python将csv数据推送到mongodb.我是python&的初学者;mongodb..我使用了以下代码

import csv
import json
import pandas as pd
import sys, getopt, pprint
from pymongo import MongoClient
#CSV to JSON Conversion
csvfile = open('C://test//final-current.csv', 'r')
jsonfile = open('C://test//6.json', 'a')
reader = csv.DictReader( csvfile )
header= [ "S.No", "Instrument Name", "Buy Price", "Buy Quantity", "Sell Price", "Sell Quantity", "Last Traded Price", "Total Traded Quantity", "Average Traded Price", "Open Price", "High Price", "Low Price", "Close Price", "V" ,"Time"]
#fieldnames=header
output=[]
for each in reader:
    row={}
    for field in header:
        row[field]=each[field]
    output.append(row)

json.dump(output, jsonfile, indent=None, sort_keys=False , encoding="UTF-8")
mongo_client=MongoClient() 
db=mongo_client.october_mug_talk
db.segment.drop()
data=pd.read_csv('C://test//6.json', error_bad_lines=0)
df = pd.DataFrame(data)
records = csv.DictReader(df)
db.segment.insert(records)

但输出是以这种格式给出的

/* 0 */
{
  "_id" : ObjectId("54891c4ffb2a0303b0d43134"),
  "[{\"AverageTradedPrice\":\"0\"" : "BuyPrice:\"349.75\""
}

/* 1 */
{
  "_id" : ObjectId("54891c4ffb2a0303b0d43135"),
  "[{\"AverageTradedPrice\":\"0\"" : "BuyQuantity:\"3000\""
}

/* 2 */
{
  "_id" : ObjectId("54891c4ffb2a0303b0d43136"),
  "[{\"AverageTradedPrice\":\"0\"" : "ClosePrice:\"350\""
}

/* 3 */
{
  "_id" : ObjectId("54891c4ffb2a0303b0d43137"),
  "[{\"AverageTradedPrice\":\"0\"" : "HighPrice:\"0\""
}

实际上,我希望输出像单个id一样,所有其他字段都应该显示为子类型

 _id" : ObjectId("54891c4ffb2a0303b0d43137")
    AveragetradedPrice :0
    HighPrice:0
    ClosePrice:350
    buyprice:350.75

请帮帮我.提前谢谢

推荐答案

谢谢你的建议.这是正确的代码:

import csv
import json
import pandas as pd
import sys, getopt, pprint
from pymongo import MongoClient
#CSV to JSON Conversion
csvfile = open('C://test//final-current.csv', 'r')
reader = csv.DictReader( csvfile )
mongo_client=MongoClient() 
db=mongo_client.october_mug_talk
db.segment.drop()
header= [ "S No", "Instrument Name", "Buy Price", "Buy Quantity", "Sell Price", "Sell Quantity", "Last Traded Price", "Total Traded Quantity", "Average Traded Price", "Open Price", "High Price", "Low Price", "Close Price", "V" ,"Time"]

for each in reader:
    row={}
    for field in header:
        row[field]=each[field]

    db.segment.insert(row)

Mongodb相关问答推荐

如何使用MongoDB对子文档进行条件投影?

在出现错误时忽略mongodb事务回滚是好做法吗

MongoDB 聚合 - $project 和 $match 阶段未按预期工作

Mongo聚合的具体格式

MongoDB shell:如何删除列表以外的所有集合

根据条件删除一些数组元素并将数组的大小更新为mongo中的另一个文件

Ruby on Rails 的 Cassandra、mongodb 或 couchdb

在 DBeaver 中连接到 Redis 或 MongoDB

无法提取地理键,经度/纬度超出范围

.save() 不是函数 Mongoose

如何在 MongoDB 集合中查找与给定条件匹配的文档和单个子文档

无法将 $match 运算符用于带有 ObjectId 的 mongodb/mongoose 聚合

MongoDB 中的所有列

使用 Jackson 与 Java Mongo DBObject 进行高效 POJO 映射

初创公司应该考虑哪些数据库系统?

mongoose 使用 $cond 中的 $exists 聚合

mongodb:upserting:仅在插入文档时设置值

mongoosefind()不返回结果

如何使用 Spring 的 MongoTemplate 和 Query 类检索字段子集?

MongoDB - $set 更新或推送数组元素