python/mongodb更新与子树结构

2024-05-16 18:25:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个保存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. 对于如何检索或更新特定定价数据,我感到困惑,我尝试使用以下方法推送新的定价数据:

    变量=集合.查找({'ticker':ticker})//找到正确的文档

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

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

newpricingdata看起来像(python print):

^{pr2}$
  1. 你将如何通过python检索股票代码msft的价格,比如2012年1月20日?mongodb文档并没有给出子树操作的好例子。。。在

Tags: 数据方法文档closedateopenlow定价
1条回答
网友
1楼 · 发布于 2024-05-16 18:25:27

如果要按日期查询,则:

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

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

^{pr2}$

问题:

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中提取该元素。在

相关问题 更多 >