我有这样的对象:
{
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函数,我只能得到一个字段的所有值,但是如果我想要多个字段?
答案 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"}}}])