MongoDB 使用复制函数打印不同的字段

MongoDB using duplicate function to print different field

db.collection.aggregate([{"$group" : {"_id": "$fieldA", "count": {"$sum": 1}}},{"$match":{"_id" :{"$ne":null}, "count" : {"$gt":1}}},{"$project": {"fieldA":"$_id", "_id" : 0}}]);

我目前正在使用此代码查找重复项,但实际上我想打印 fieldB 而不是 fieldA。通过使用上面的内容,我相信我已经创建了一个子集?有没有简单的方法只打印fieldB?

即。我要打印 {"_id":0, "fieldB":1}

我能想到的唯一方法是命名这个子集,然后与原始子集连接,然后只打印 fieldB,但这似乎效率不高。

要查看最后一个字段 B,您可以这样做:

$最后: playground1 (但是在这里,如果每个重复的字段 A 有不同的字段 B,您将不会发现)

或者要查看重复的 filedA 的所有字段 B,您可以这样做:

$推送: playground2

db.collection.aggregate([
{
"$group": {
  "_id": "$fieldA",
  "count": {
    "$sum": 1
  },
  fieldB: {
    $push: "$fieldB"
  }
 }
},
{
 "$match": {
  "_id": {
    "$ne": null
   },
  "count": {
    "$gt": 1
   }
  }
 },
 {
  "$project": {
  "fieldA": "$_id",
  "fieldB": 1,
  "_id": 0
  }
 }
])