【发布时间】:2017-10-04 02:35:55
【问题描述】:
我正在创建一个数据库来存储投资组合中的所有交易,这些交易由各个“策略”分隔。
如下面的代码所示,将新合约/交易附加到ListFields 以将EmbeddedDocuments 添加到数据库有什么缺点?
from mongoengine import *
import datetime
class Trade(EmbeddedDocument):
tradeDate = DateTimeField(default=datetime.datetime.now(), required=True)
position = IntField(required=True)
class Contract(EmbeddedDocument):
contractID = IntField(required=True, unique=True)
trades = ListField(EmbeddedDocumentField(Trade))
def addTrade(self, trade: Trade):
self.trades.append(trade)
class Strategy(Document):
strategyType = StringField()
contracts = ListField(EmbeddedDocumentField(Contract))
def addContract(self, contract: Contract):
self.contracts.append(contract)
策略创建示例:
contract = Contract(contractID=1234)
contract.addTrade(Trade(position=1))
strat = Strategy(strategyType="Strategy One")
strat.addContract(contract)
strat.save()
每个策略在 99% 的情况下都会有 10 个以下的合约,但很多时候在策略创建后会添加额外的合约到“合约”ListField.
每次对每个特定合约进行交易时,仓位和日期都将记录在添加到“交易”ListField.的新交易文件中@
【问题讨论】:
标签: python mongodb mongoengine