【问题标题】:Finding nested values in pymongo在 pymongo 中查找嵌套值
【发布时间】:2012-11-16 00:27:43
【问题描述】:

我有一个数据:

{'_id': 0, 'values': [{'value': 1, 'value_type': 'type1'}, {'value': 2, 'value_type': 'type2'}, {'value': 134, 'value_type' : 'type1'}, {'value': 2564, 'value_type': 'type212'}]} 
{'_id': 1, 'values': [{'value': 136, 'value_type': 'type1'}, {'value': 465652, 'value_type': 'type1'}, {'value': 4, 'value_type' : 'type299'}, {'value': 112564, 'value_type': 'type2456'}]}

我正在使用 pymongo 2.2 和 Python 3.2。

目标是找到具有value_type 等于type1 和最小值value 的字典(value 和value_type)来删除它们。就我而言,那是{'value': 1, 'value_type': 'type1'} and {'value': 136, 'value_type': 'type1'},我想删除它们。

我该如何实现?

--编辑--

我知道如何更新(在我的情况下是删除),我将使用 $unset 运算符。我不知道如何找到我需要删除的值。

【问题讨论】:

  • @alexvassel -- “你试过什么?”没有帮助。这个问题有一个具体的答案,独立于发帖人尝试过的任何事情。如果您因为不了解该解决方案而正在寻找有关该解决方案的信息,请查阅文档或您的专业知识。这个问题是关于如何表达一个查询。这就像问“你试过什么?”有人问“用法语指代左边第二座建筑的有效方法是什么?”。
  • @Purrell 我看不到你的答案。您输入的文字无法解决问题。
  • @Purrell 我认为我们不应该再谈论这个了。祝你有美好的一天。

标签: python mongodb mongoid pymongo


【解决方案1】:

使用 $pull 更新查询 http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull

coll.update({}, {"$pull" :{"values": {"value":1}})

【讨论】:

    【解决方案2】:

    像这样使用$pull 运算符:

    value = 150
    coll.update({}, 
        {'$pull': {'values': {'value_type': 'type1', 'value': {'$lt': value}}}},
        multi=True)
    

    multi 参数设置为True 告诉更新更新所有文档,而不仅仅是第一个。

    【讨论】:

    • 不知道值,每个项目都有自己的最小值。
    • @AlanDert 对不起,我误解了你的问题。如果您需要删除具有最小值的元素,则没有设置操作可以执行此操作,因此您需要遍历集合并手动更新每个项目以在代码中删除该元素。
    • @AlanDert 请参阅this answer 以了解类似问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    相关资源
    最近更新 更多