首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb:命令和限制集合,然后命令和限制结果文档嵌套文档

mongodb:命令和限制集合,然后命令和限制结果文档嵌套文档
EN

Stack Overflow用户
提问于 2015-04-19 01:32:50
回答 1查看 45关注 0票数 1

我的game集合上有以下数据结构:

代码语言:javascript
复制
{
    name: game1
    date: 2010-10-10
    media: [{
        id: 1,
        created: 2010-10-10 00:00:59
    }, {
        id: 2,
        created: 2010-10-10 00:00:30
    }]
},
{
    name: game2
    date: 2010-10-09
    media: [{
        id: 1,
        created: 2010-10-09 00:10:40
    }, {
        id: 2,
        created: 2010-10-09 09:01:00
    }]
}

我想得到的game与最高的日期,然后得到相关的media与最高的created,以获得它的id。在上面的例子中,结果是

代码语言:javascript
复制
{
    name: game1
    date: 2010-10-10
    media: [{
        id: 1,
        created: 2010-10-10 00:00:59
    }]
}

我尝试使用findfind_one,以及aggregation,但是我想不出一种方法来进行这个查询。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-19 03:48:12

您需要$unwind media数组,以便在该数组中获取created最高的子文档,然后按datecreated的顺序对文档进行排序。使用$limit输出n文档,在我们的例子中是1

代码语言:javascript
复制
In [26]: import pymongo

In [27]: conn = pymongo.MongoClient()

In [28]: db = conn.test

In [29]: col = db.gamers

In [30]: list(col.aggregate([{"$unwind": "$media"}, {"$sort": {"date": -1, "media.created": -1}}, {"$limit": 1}]))
Out[30]: 
[{'_id': ObjectId('553323ec0acf450bc6b7438c'),
  'date': '2010-10-10',
  'media': {'created': '2010-10-10 00:00:59', 'id': 1},
  'name': 'game1'
}]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29724834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档