PyMongo搜索和排序非重复值(KeyError:' weight')

时间:2017-11-22 23:49:12

标签: python mongodb sorting pymongo

我有这样的数据:

"name": "colla", 'status': '+'

由此我想找到所有带有list(db.some_db.find({}, {"name": "cola","status":'+'})).sort(key=itemgetter('weight'), reverse=True)的非重复元素并等同于随机变量。

示例:从上面的数据获取所有"权重" (2,3)和等同。 (some_random1 = 2,some_random2 = 3)

我是如何尝试的:KeyError: 'weight' ,但我收到此错误:

{{1}}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的查询中存在拼写错误。

documents = db.some_db.find({'name': 'colla', 'status': '+'})
documents.sort(key=lambda doc: doc.get('weight', None), reverse=True)

使用itemgetter,您必须确实确定所有文档都有权重字段。在这里使用lambda是一种按重量分类的非严格方法。 查询结果可以限制为查找具有权重字段的文档。

documents = db.some_db.find({
                'name': 'colla', 'status': '+', 'weight': {'$exists': True},
            })

最后,查询结果可以限制为查找权重为2或3的文档。

documents = db.some_db.find({
                'name': 'colla', 'status': '+', 'weight': {'$in': [2, 3]},
            })