过滤集合但按内部 属性 排序

Filter a collection but sort on inner property

考虑到我有如下文档的集合,我想获取如下返回的信息:

Select 来自 campaignID = 12 活动的所有条目,按 entries.questionscorrect 降序排序,限制为 10。

我已经尝试了一些查询,但我似乎陷入了这样一个事实,即我在一个级别上选择但想在较低级别上订购,即 属性.

这是我目前的情况:

db.getCollection('main').find({"id":4}, {"entries": 1}).sort({"questionscorrect": -1}).limit(2)

请问我如何用 Go (Mgo) 语法或直接 MongoDB 查询来写这个?

我不断收到返回的信息,但按

的数量排序
{
    "_id": ObjectId("57f4a590a4be269aa54a0505"),
    "campaignID": 12,
    "name": "name-here",
    "description": "description-here",
    "entries": [{
        "id": 1,
        "nickname": "conorh",
        "name": "conor h***",
        "email": "ch@gmail.com",
        "agreeTerms": true,
        "optInMarketing": false,
        "questionscnswered": 10,
        "questionscorrect": 3
    }, {
        "id": 2,
        "nickname": "bobs",
        "name": "bob smyth",
        "email": "bs12121@gmail.com",
        "agreeTerms": true,
        "optInMarketing": false,
        "questionscnswered": 10,
        "questionscorrect": 6
    }, {
        "id": 3,
        "nickname": "jd12",
        "name": "jane doe",
        "email": "janedough@gmail.com",
        "agreeTerms": true,
        "optInMarketing": false,
        "questionscnswered": 10,
        "questionscorrect": 1
    }]
}

尝试以下:

db.getCollection('main').aggregate([
{$match: {"campaignID" : 12.0}},
{$unwind:"$entries"},
{$sort: {"entries.questionscorrect": -1}},
{$group:{_id:"$_id", 
    "entries":{$push:"$entries"}}}
])