gpt4 book ai didi

子树中的 python/mongodb 更新和结构

转载 作者:可可西里 更新时间:2023-11-01 10:35:01 25 4
gpt4 key购买 nike

这是一个包含 OHLC 股票数据的示例文档,已截断(通过 python 打印)。

{
"_id":ObjectId("4f1c567d60de7d0908000000"),
"ticker" : "msft"
"pricing":[
{
"Volume":"2094300",
"Adj Close":"85.87",
"High":"88.11",
"Low":"87.45",
"Date": ISODate("2011-01-14T00:00:00 Z"),
"Close":"88.10",
"Open":"87.74"
},
{
"Volume":"2351900",
"Adj Close":"85.81",
"High":"88.87",
"Low":"87.76",
"Date": ISODate("2011-01-13T00:00:00 Z"),
"Close":"88.04",
"Open":"88.47"
},
{
"Volume":"2732900",
"Adj Close":"86.42",
"High":"88.76",
"Low":"87.92",
"Date": ISODate("2011-01-12T00:00:00 Z"),
"Close":"88.66",
"Open":"88.02"
}

关于这个的几个问题:

  1. 有什么方法可以在文档中而不是在集合中对事物进行索引?我希望能够轻松地按日期查找数据,也许有更好的方法来组织数据?

  2. 我对如何检索或更新特定定价数据感到困惑,我尝试使用以下方法推送新的定价数据:

    var = collection.find({ 'ticker' : ticker})//找到正确的文档

    var[0].update( { '$push' : { 'pricing' : newpricingdata } })//更新公司值(value)观

但它不起作用。查找工作正常,更新不。

newpricingdata 看起来像(python 打印):

[
{
'Volume':'3522600',
'Adj Close':'85.65',
'High':'85.70',
'Low':'84.96',
'Date':datetime.datetime(2012,1,20,0,0),
'Close':'85.65',
'Open':'85.45'
},
{
'Volume':'3413700',
'Adj Close':'85.80',
'High':'86.23',
'Low':'84.92',
'Date':datetime.datetime(2012,1,19,0,0),
'Close':'85.80',
'Open':'85.10'
},

]
  1. 您将如何通过 Python 检索 2012 年 1 月 20 日 msft 的价格? mongodb 文档并没有真正给出子树操作的好例子......

最佳答案

如果你想按日期查询那么:

collection.ensureIndex({"pricing.Date" : 1}) 

要更新定价数据,您必须在 collection 上调用 update() 方法,就像在同一 collection 上调用 find() 一样code>,你需要 $pushAll 因为 newpricingdata 是一个数组:

collection.update({ "_id" : ObjectId("4f1c567d60de7d0908000000")}, { '$pushAll' : { 'pricing' : newpricingdata } }, false, false); 

问题:

How would you retrieve the price of ticker msft on say 1/20/2012 via python? The mongodb documentation doesnt really give good examples of subtree operations...

不可能只查询和返回数组的匹配元素,mongodb 会给你整个数组。这意味着您必须在 python 中提取该元素。

关于子树中的 python/mongodb 更新和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com