如何在 MongoDB 中获取多个不同的字段?

How to get multiple distinct fields in MongoDB?

我正在使用 MongoDB 和 Nodejs。 例如:

Array = [{name: 'Sam',  age: 26, hobby: 'Baseball'},
         {name: 'Sam',  age: 30, hobby: 'Baseball'},
         {name: 'John', age: 26, hobby: 'Baseball'},
         {name: 'Mike', age: 32, hobby: 'Baseball'},
         {name: 'Max',  age: 32, hobby: 'Baseball'},]
        
                                                    

我想要一个不重复 nameage 的任何值并给我结果的查询 => [ {name: 'Sam', age: 26, hobby: 'Baseball'},{name: 'Mike', age: 32, hobby: 'Baseball'} ]

是否可以使用 MongoDB 和 Nodejs?

我检查了 distinct() 但它只需要一个填充作为查询。

您可以使用$facet对姓名和年龄进行分类

  • $sort 按年龄排序
  • $facet 将传入数据分为两组。一个是按名字分组,一个是按年龄分组。
  • $setIntersection得到两个数组的公共对象。但是请看一下

剧本是

db.collection.aggregate([
  { $sort: { age: 1 } },
  {
    $facet: {
      nameGroup: [
        {
          $group: {
            _id: "$name",
            name: { $first: "$name" },
            age: { $first: "$age" },
            hobby: { $first: "$hobby" }
          }
        },
        { $project: { _id: 0 } }
      ],
      ageGroup: [
        {
          $group: {
            _id: "$age",
            name: { $first: "$name" },
            age: { $first: "$age" },
            hobby: { $first: "$hobby" }
          }
        },
        { $project: { _id: 0 } }
      ]
    }
  },
  {
    $project: {
      data: { "$setIntersection": [ "$nameGroup", "$ageGroup" ] }
    }
  }
])

工作Mongo playground