mongodb查询以查找数组中的不同值

时间:2018-11-01 05:24:23

标签: mongodb distinct-values

为数组“ 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的不同值?

2 个答案:

答案 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
      }
    }
  }
]);

游乐场链接:https://mongoplayground.net/p/qR2mTqXPs3o