我在mongodb文档中嵌套了以下timeseries数组(名为“data”):
"_id" : ObjectId("5a235e645bb1000704593960"),
"data" : [
{
"Volume" : NumberLong(41527200),
"Adj Close" : 171.850006,
"High" : 172.139999,
"Low" : 168.440002,
"Date" : ISODate("2017-11-30T00:00:00.000+0000"),
"Close" : 171.850006,
"Open" : 170.429993
},
{
"Volume" : NumberLong(39726100),
"Adj Close" : 171.050003,
"High" : 171.669998,
"Low" : 168.5,
"Date" : ISODate("2017-12-01T00:00:00.000+0000"),
"Close" : 171.050003,
"Open" : 169.949997
},
{
"Volume" : NumberLong(39759300),
"Adj Close" : 171.050003,
"High" : 171.669998,
"Low" : 168.5,
"Date" : ISODate("2017-12-01T00:00:00.000+0000"),
"Close" : 171.050003,
"Open" : 169.949997
},
],
"ticker" : "AAPL",
"last_update" : ISODate("2017-12-07T00:00:00.000+0000")
}
我的问题是,当我更新timeseries时,给定日期的一些数组元素可能会更改。例如,在数组中有2条2017-12-01的记录。除“Volume”外,所有字段都相同。但是,当我更新数组时,会向数组中添加一条新记录,而不是更新现有的2017-01-01记录。你知道吗
我目前正在更新以下文档:
self.__db.equity_data.update({'ticker': ticker,
'last_update': {'$lt': record['last_update']}},
{'$set': {'last_update':record['last_update']},
'$addToSet': {'data': {'$each': record['data']}}},
upsert=True
)
是否有任何方法可以确保不将重复项(基于日期)添加到数组中,而是更新现有数组元素?你知道吗
谢谢你的帮助。你知道吗
我不熟悉pymongo,但是您是否尝试过将
upsert
标志设置为false
?如果其余的语句是正确的,它应该防止创建新文档而不是更新旧文档。另外,您应该尝试添加multi
标志,因为上面的代码在默认情况下只更新一个文档。 祝你好运!你知道吗相关问题 更多 >
编程相关推荐