如何使用 MongoEngine Python 根据文档中字典中的键对 MongoDB 中的文档进行排序?
How to sort documents in MongoDB based on keys inside a dictionary in document using MongoEngine Python?
所以我的 MongoDB Collection:
中有这种类型的文档
{
"_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)
这将是 return 第一条记录,其中 t_e_stats.acc
是最大值。
mongo shell
db.collection.find({ "t_id" : "12345678a" }).sort("t_e_stats.acc", -1).limit(1);
Mongoengine
Model.objects.get(t_id="12345678a").order_by("-t_e_stats.acc").first()
所以我的 MongoDB Collection:
中有这种类型的文档{
"_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)
这将是 return 第一条记录,其中 t_e_stats.acc
是最大值。
mongo shell
db.collection.find({ "t_id" : "12345678a" }).sort("t_e_stats.acc", -1).limit(1);
Mongoengine
Model.objects.get(t_id="12345678a").order_by("-t_e_stats.acc").first()