MongoDB和有序数组的复杂查询

时间:2012-03-27 20:00:29

标签: mongodb collections find

我在mongo集合中的users上保留了以下实体:

{
    "fullname": "Luke Tomson",
    "nicknames": [
        {
            "name": "lukeone",
            "created": ISODate("2011-05-18T19:42:56.411Z")
        },
        {
            "name": "magicluke",
            "created": ISODate("2012-01-12T19: 42: 56.411Z")
        },
        {
            "name": "superluke",
            "created": ISODate("2012-03-27T19: 42: 56.411Z")
        }
    }
]
}

如何为namefullname的用户获取最后昵称"Luke Tomson"?更具体地说,我如何在mongo shell中检索在特定字段(在本例中为created)排序的已排序数组的特定索引(第一个或最后一个)。

由于

1 个答案:

答案 0 :(得分:1)

From the documentation,传递给.find的第二个对象是您想要返回的对象部分的选择。

所以,你想要的基本上是:

db.users.find({"fullname": "Luke Tomson"}, {"nicknames": { $slice: -1 } });

如果你的数据库中有多个“Luke Tomson”,你可能还想要返回_id,你需要唯一地识别它们。