【问题标题】:How to extract certain elements from an array of documents nested inside a document in mongoDB?如何从嵌套在 mongoDB 文档中的文档数组中提取某些元素?
【发布时间】:2018-11-28 05:23:27
【问题描述】:

我有这个 mongodb 文档。我正在使用 pymongo,我想将所有 workout-names 字段提取为字典,然后使用它在网页上以列表的形式查看它们。

{
"_id" : ObjectId("5b28bfed9ebcea299d08976e"),
"username" : "cybr1998@gmail.com",
"workouts" : [
    {
        "workout-name" : "Treadmill",
        "workout-duration" : "1",
        "workout-frequency" : "Everyday",
        "_id" : "td"
    },
    {
        "workout-name" : "Squats",
        "workout-duration" : "1",
        "workout-frequency" : "Everyday",
        "_id" : "sq"
    },
    {
        "workout-name" : "Running",
        "workout-duration" : "0.5",
        "workout-frequency" : "Everyday",
        "_id" : "rn"
    }
    ]
}

我希望得到所有锻炼名称,结果如下:

{"Treadmill", "Pushups", "Squats"}

我试着做这个查询:

workouts.find_one({"username":session['username']}, {"workouts.workout-name" : , "_id" : 0})

我得到了这个结果:

{'workouts': [{'workout-name': 'Treadmill'}, {'workout-name': 'Squats'}, {'workout-name': 'Running'}]}

如何改进我的查询以获得所需的结果?

【问题讨论】:

标签: python json mongodb


【解决方案1】:

此代码似乎有效:

list_workouts = []
available_workouts = workouts.find_one({"username": session['username']}, {"workouts.workout-name": 1, "_id": 0})
list_len = len(available_workouts['workouts'])
for i in range(0, list_len):
    list_workouts.append(available_workouts['workouts'][i]['workout-name'])

【讨论】:

    猜你喜欢
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多