获取MongoDB中某些字段的所有值

时间:2017-11-17 12:59:20

标签: node.js database mongodb

我有这样的对象:

{
    model:"Samsung Galaxy Note 8",
    cpu : "Snapdragon 835 Exynos 8895",
    storage: "64/128/256 GB",
    removable:"256GB microSDXC",
    ram: "6 GB",
    os: "Android 7.1.1 'Nougat'",
    size:{
        l:162.5,
        h:74.8,
        w:8.6
    },
    weight:195,
    battery:"3300 mAh Li-Ion, non-removable battery",
    display:"6.3', 2960x1440",
    camera:{
        rear:12,
        front:8
    },
    image:"https://image.com"
}

我想要例如cpus和rams的所有不同值。如果我使用distinct()mongodb函数,我只能得到一个字段的所有值,但是如果我想要多个字段?

2 个答案:

答案 0 :(得分:0)

您可以使用聚合。如下所示,它将为您提供cpu和ram的所有不同组合:

db.datastorevalues.aggregate(
    [

        {
            $group: {
                _id:{
                     "cpu ":"$cpu ",
                     "ram":"$cpu "
                }
            }
        }
    ]

);

修改

如果您想要cpus的所有不同值以及数据库中rams的所有不同值

db.datastorevalues.aggregate(
    [

        {
            $group: {
                _id: null,
                cpus: {$addToSet: "$cpu"},
                rams: {$addToSet: "$ram"},

            }
        }
    ]
);

答案 1 :(得分:0)

您可以使用$aggregate。聚合管道有很多有用的方法。

汇总查询以分组并在cpus和ram上查找不同的值

db.so.aggregate([{$group:{_id:{ram:"$ram", cpu:"$cpu"}}}])