为数组“ test”创建了一个集合
({a:"foo", b:[10,20,30]})
({a:"foo", b:[15,25,35]})
({a:"foo", b:[10,40,50]})
({a:"bar", b:[10,60,70]})
MongoDB查询以查找所有具有不同值和b值为“ 10”的文档。
我已经尝试过
db.test.find({b: {$elemMatch : {$in : [10] }}})
{ "_id" : ObjectId("5bda7ea8aabd746c974b5faa"), "a" : "foo", "b" : [ 10, 20, 30 ] }
{ "_id" : ObjectId("5bda7f74aabd746c974b5fac"), "a" : "foo", "b" : [ 10, 40, 50 ] }
{ "_id" : ObjectId("5bda7f74aabd746c974b5fad"), "a" : "bar", "b" : [ 10, 60, 70 ] }
这给出了第二个的输出,如何获得a的不同值?
答案 0 :(得分:1)
我得到了答案。
db.test.distinct( "a" , {b: {$elemMatch : {$in : [10] }}})
输出:
[ "foo", "bar" ]
答案 1 :(得分:0)
db.collection.aggregate([{
$unwind: "$b"
},
{
$group: {
_id: "$b",
a_vals: {
$addToSet: "$a"
},
count: {
$sum: 1
}
}
},
{
$match: {
count: {
$gt: 1
}
}
}
]);