我对从列表中访问值有一点疑问。 我有一个元素列表
"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
的总数。
答案 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”。
所以你真的应该在你的数据中改变它。