【问题标题】:Returning an array in mongodb在 mongodb 中返回一个数组
【发布时间】:2015-04-15 07:29:37
【问题描述】:

我正在尝试在下面的文档中返回数组的某些元素。

{
"_id": 2,
"awardAmount": 6000,
"url": "www.url.com",
"numAwards": 3,
"award": "Faculty Seed Research Grant",
"Type": "faculty",
"Applicates": [
    {
        "School": "psu",
        "Name": "tom",
        "URL": "www.url.com",
        "Time": "",
        "Research": "",
        "Budge": 7500,
        "appId": 100,
        "citizenship": "us",
        "Major": "mat",
        "preAwards": "None",
        "Advisor": ""
    },
    {
        "School": "ffff",
        "Name": "KEVIN",
        "URL": "www.url.com",
        "Time": "5/5/5-6/6/6",
        "Research": "topology",
        "Budge": 9850,
        "appId": 101,
        "citizenship": "us",
        "Major": "gym",
        "preAwards": "None",
        "Advisor": "Dr. cool",
        "Evaluators": [
            {
                "abstractScore": 3,
                "goalsObjectivesScore": 4,
                "evalNum": 1
            },
            {
                "abstractScore": 545646,
                "goalsObjectivesScore": 46546,
                "evalNum": 2
            }
        ]
    }
]
}

如果他们有一个“评估者”字段,我只想要“应用程序”数据。这是我正在尝试的方法

db.coll.find({'Applicates.Evaluators':{'$exists': True }})

这给了我整个文档,但我只想要像这样包含“评估者”字段的“应用”数据。

{
"_id": 2,
"awardAmount": 6000,
"url": "www.url.com",
"numAwards": 3,
"award": "Faculty Seed Research Grant",
"Type": "faculty",
"Applicates": [
    {
        "School": "ffff",
        "Name": "KEVIN",
        "URL": "www.url.com",
        "Time": "5/5/5-6/6/6",
        "Research": "topology",
        "Budge": 9850,
        "appId": 101,
        "citizenship": "us",
        "Major": "gym",
        "preAwards": "None",
        "Advisor": "Dr. cool",
        "Evaluators": [
            {
                "abstractScore": 3,
                "goalsObjectivesScore": 4,
                "evalNum": 1
            },
            {
                "abstractScore": 545646,
                "goalsObjectivesScore": 46546,
                "evalNum": 2
            }
        ]
    }
]
}

【问题讨论】:

    标签: python mongodb pymongo aggregation-framework


    【解决方案1】:

    试试这个(关键是使用 $unwind 运算符)

    db.coll.aggregate(
    [
    { $match : {'Applicates.Evaluators':{'$exists': true }} },
    { $unwind : "$Applicates" },
    { $match : {'Applicates.Evaluators':{'$exists': true }} },
    { $group : { _id : "$_id", 
        'Applicates' : {$push : '$Applicates'} , 
        awardAmount : {$first : '$awardAmount'},
        url : {$first : '$url'},
        award : {$first : '$award'},
        numAwards : {$first : '$numAwards'},
        award : {$first : '$award'},
        Type : {$first : '$Type'},
        }},
    ])
    

    【讨论】:

      猜你喜欢
      • 2015-07-10
      • 2023-01-24
      • 2013-10-04
      • 1970-01-01
      • 2014-09-16
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      相关资源
      最近更新 更多