列出属性的所有值?

时间:2014-03-08 05:40:48

标签: mongodb database

假设我有一个Student集合:

{
    name: "ABC",
    age: 10,
    address {
        city: "CITY1",
        state: "STATE",
    }
}

{
    name: "DEF",
    age: 11,
    address {
        city: "CITY2",
        state: "STATE",
    }
}

{
    name: "ABC",
    age: 12,
    address {
        city: "CITY1",
        state: "STATE",
    }
}

我可以从列表中获取所有唯一City值的列表吗?例如,通过以上3个文档,我想获得列表{"CITY1", "CITY2"}

我刚从关系数据库开始使用MongoDB,所以这对我来说有点困惑,因为我需要另一个地址表,我可以使用SELECT DISTINCT来获得我想要的东西。

2 个答案:

答案 0 :(得分:3)

MongoDB有一个类似的db.collection.distinct()命令。

要访问address子文档中的元素,您需要使用dot notation,因此完整的查询将是:

 db.Student.distinct("address.city")

一些有用的文档链接,可帮助您从SQL查询进行翻译:

答案 1 :(得分:0)

仅供注释,已提及distinct,但对于更常规的回复,请使用aggregate

db.Student.aggregate([
    {"$unwind": "$address" }},
    {"$group": { "_id": "$address.city" }},
    {"$project": { "_id": 0, "city" : "$_id" }}
])

与明显相比,啰嗦,但这取决于你的眼睛想要什么。