【问题标题】:How to sort documents in MongoDB based on keys inside a dictionary in document using MongoEngine Python?如何使用 MongoEngine Python 根据文档中字典中的键对 MongoDB 中的文档进行排序?
【发布时间】:2021-04-07 05:24:41
【问题描述】:

所以我的 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 查询的方法,如果可能的话如何使用?

【问题讨论】:

    标签: python-3.x mongodb mongodb-query mongoengine


    【解决方案1】:

    由 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

    https://pymongo.readthedocs.io/en/stable/api/pymongo/collection.html?highlight=find%20one#pymongo.collection.Collection.find_one

    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()
    

    【讨论】:

    • 但是这个答案是针对原生 PyMongo 的。我在 MongoEngine 中寻找解决方案。
    • @raghavsikaria MongoEngine 是什么意思?
    • 它是另一个通过 Python 连接和查询 MongoDB 的高级抽象库。
    • 谢谢。小更正:我们在这里不需要'get'。没有它也可以工作。喜欢: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]
    • @raghavsikaria 很高兴,它还帮助更新了您提到的详细信息的答案,如果您想添加详细信息,请随时编辑答案,
    猜你喜欢
    • 2011-01-30
    • 2012-03-21
    • 2016-07-25
    • 1970-01-01
    • 2012-02-11
    • 2020-10-17
    • 2021-10-22
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多