【问题标题】:Reach to array subdocument in mongodb到达 mongodb 中的数组子文档
【发布时间】:2015-06-09 11:08:31
【问题描述】:

如何到达分值数组的最后一个元素:64.8 ??? 我尝试使用 $pull 运算符,但我有 200 个类似此表单的文档。所以,我不能使用分数数组的最新元素的确切值。

{
"_id" : 198,
"name" : "Timothy Harrod",
"scores" : [
    {
        "type" : "exam",
        "score" : 11.9075674046519
    },
    {
        "type" : "quiz",
        "score" : 20.51879961777022
    },
    {
        "type" : "homework",
        "score" : 55.85952928204192
    },
    {
        "type" : "homework",
        "score" : 64.85650354990375
    }       ]
} 

【问题讨论】:

  • 你所说的分数数组的最后一个元素是什么意思?
  • @Kasra 在作业作业 OP 中应删除每个文档的数组中分数最低的子文档。
  • 在这里更详细:stackoverflow.com/questions/29439688/…@Kasra
  • 这可能对你有帮助 - stackoverflow.com/questions/13335009/…
  • @Vishwas 这个链接很棒!非常感谢!但是它删除了最低分数并且不考虑“type”:“homework”,尽管它写成{$match:{scores.type:“homework”}。我尝试修复它,但它给出了错误,例如以错误的方式使用聚合函数。

标签: python arrays mongodb pymongo


【解决方案1】:

如果是字符串格式,最简单的方法是将该文档放入 python 字典中:

import json
doc_json = json.loads(doc_string)

然后要访问分数数组的最后一个元素,只需:

last_element = doc_json['scores'][-1]

['scores'] 告诉我们从 json_doc 中获取 'scores' 数组,而 [-1] 告诉我们访问这个 'scores' 数组的最后一个元素。从那里开始,如果您想从 last_element 获得分数,您只需:

last_score = last_element['score']

你也可以这样做:

last_score = doc_json['scores'][-1]['score']

【讨论】:

  • 它给出了“TypeError:预期的字符串或缓冲区”。无论如何,感谢您的快速回复,@ Parminder Shergill。您可以在此处获取有关该问题的详细信息:stackoverflow.com/questions/29439688/…
猜你喜欢
  • 1970-01-01
  • 2012-09-28
  • 2014-07-29
  • 2018-01-26
  • 2021-06-17
  • 2019-12-07
  • 2016-12-31
  • 1970-01-01
相关资源
最近更新 更多