通过在Python中匹配从列表中查找特定值

时间:2015-08-06 09:39:08

标签: python mongodb mongodb-query aggregation-framework

我对从列表中访问值有一点疑问。 我有一个元素列表

"result":[{"_id": "55b8b9913f32df094c7ba922", "Total": "450"}, 
          {"_id": "55b8a2083f32df1030b9ef16", "Total": "400"}]

这里我们基本上通过list[0]或类似的东西从列表中获取值。列表元素。

我想知道我们是否只能通过将其与_id匹配来从列表中获取特定值。因为如果数据库很大,那么通过list[]

来获取值是很困难的

我的实际代码是:

id = self.body['_id']
test = yield db.Result.aggregate(
        [
            { '$group': { '_id' : "$StudentId",
                'Total': {'$max': "$Total"}}
            }
        ]
    )
list = test.get('result')
print(list)

我想获得所提供的id的总数。

1 个答案:

答案 0 :(得分:0)

首先使用$match获取所需的文档。

id = self.body['_id']

test = yield db.Result.aggregate(
        [
            { '$match': { '_id': id } },
            { '$group': { '_id' : "$StudentId",
                'Total': {'$max': "$Total"}}
            }
        ]
    )
list = test.get('result')
print(list)

要匹配多个值,请使用$in,声明一个数组

listOfIds = [id1,id2,id3]

管道改变:

            { '$match': { '_id': { '$in': listOfIds } },

正如我先前所说:

  

您的“总计”字段包含“字符串”。如果您不将其更改为数字,则会得到意外结果。字符串排序与数字不同。即“8”大于“100”。

所以你真的应该在你的数据中改变它。