python-3.x - 如何使用 MongoEngine Python 根据文档中字典中的键对 MongoDB 中的文档进行排序?
问题描述
所以我的 MongoDB 集合中有这种类型的文档:
{
"_id" : ObjectId("606c66c875a2fe6153bfc71f"),
"t_id" : "12345678a",
"r_id" : "r12345678a",
"t_e_stats" : {
"acc" : "70"
},
"register_time" : ISODate("2021-04-06T19:18:56.890Z")
}
这些文档中有多个具有相同的“t_id”和不同的“t_e_stats”字典。但是所有 't_e_stats' 字典中都有 'acc' 键。现在我想在 't_e_stats' 字典中查询具有最大值 'acc' 的特定 't_id' 的条目。我如何在 MongoEngine 中做到这一点?或者我发现也有在 MongoEngine 中运行 PyMongo 查询的方法,如果可能的话,如何使用它?
解决方案
正如OP所评论的
Model.objects(t_id="12345678a").order_by("-t_e_stats.acc").first()
如果有人不仅对对象感兴趣,而且对 JSON 文档感兴趣,那么你可以这样做:
[data_entry._data for data_entry in Model.objects(t_id="12345678a").order_by("-t_e_stats.acc")][0]
使用.sort
mycol.find_one({ "t_id" : "12345678a" }).sort("t_e_stats.acc", pymongo.DESCENDING)
这将返回t_e_stats.acc
最大的第一条记录。
蒙哥壳
db.collection.find({ "t_id" : "12345678a" }).sort("t_e_stats.acc", -1).limit(1);
蒙哥引擎
Model.objects.get(t_id="12345678a").order_by("-t_e_stats.acc").first()
推荐阅读
- database - 分离 TFS 数据库时的后果和对用户的影响
- hibernate - 如何使用 JPARepository 仅返回目标实体
- c++ - 如何在右键单击时删除表格行
- ruby-on-rails - 将 paypal payflow 与 rails 集成
- javascript - 在移动设备上的图像之间滑动(左右)的最佳/最简单方法是什么?
- scala - 列表未在“foreach”语句中更新,返回空列表
- c# - 有没有办法通过脚本改变画布内元素的层顺序?
- xamarin - 在 Visual Studio 2019 for Mac 版本 8.2 之后无法构建
- reactjs - 在 Picker 元素中显示信息时出现问题
- ipfs - 为什么我可以访问文件,尽管没有固定它们?