无法在电机python中为多个参数创建唯一索引。仍插入旧文档

时间:2018-09-22 17:48:44

标签: python indexing pymongo

我是python的初学者。我目前正在使用motor(asyncio pymongo)python。我尝试将数据发布到数据库中,如下所示,并为日期,股票行情,时间创建唯一索引:

import asyncio
import motor.motor_asyncio
import time
import datetime
import pymongo

client = motor.motor_asyncio.AsyncIOMotorClient("host","port")
dbPrice = client["CheckPost"]
Time = datetime.datetime.now()
Time.date()

async def Check():
    dataCheck = [{"Ticker": "ACB",
                  "ForeignBuyQ": 1200, 
                  "ForeignSellQ": 1700,
                  "TotalMatchQ": 321311,
                  "Time":151543431},               
                 {"Ticker": "BMP",
                  "ForeignBuyQ": 1400,
                  "ForeignSellQ": 1800,
                  "TotalMatchQ": 424311,
                  "Time": 151543531},                
                 {"Ticker": "ROS",
                  "ForeignBuyQ":140420,
                  "ForeignSellQ":11800,
                  "TotalMatchQ":652424311,
                  "Time":151543731},              
                 {"Ticker":"FLC",
                  "ForeignBuyQ":180210,
                  "ForeignSellQ":179200,
                  "TotalMatchQ":975424311,
                  "Time":151543931},
                 {"Ticker":"ART",
                  "ForeignBuyQ":18220210,
                  "ForeignSellQ":17921200,
                  "TotalMatchQ":97542124311,
                  "Time":151543931}]
    for data in dataCheck:
        data.setdefault("Time",int(time.mktime(Time.timetuple())))
        if not await dbPrice["StockVCSC"].find_one({"Date":int(time.mktime(Time.date().timetuple()))}):
            await dbPrice["StockVCSC"].insert_one({"Date":int(time.mktime(Time.date().timetuple())),
                                                   "Data":[data]})
        else:
            await dbPrice["StockVCSC"].update_one({"Date":int(time.mktime(Time.date().timetuple()))},
                                                  {"$push":{"Data":data}})

    await dbPrice["StockVCSC"].create_index([("Date", pymongo.ASCENDING),(
                                              "Data.Ticker", pymongo.ASCENDING),(
                                              "Data.Time", pymongo.ASCENDING)], unique = True)

loop = asyncio.get_event_loop()
loop.run_until_complete(Check())

但是当我再次检查插入上述文档时,它们仍会毫无提示地插入我的数据库中

Traceback (most recent call last): DuplicateKeyError: E11000 duplicate
key error index:

你能帮我错过的地方吗?

非常感谢您

0 个答案:

没有答案