如何检查Mongoose中文档中的重复嵌套数组?

时间:2017-09-25 19:01:36

标签: arrays node.js mongodb

以下是我的集合中嵌套文档的示例:

{
  "title" : "front-end developer",
  "age" : 25,
  "name" : "John",
  "city" : "London",
  "skills" : [
    {
      "name" : "js",
      "project" : "1",
      "scores" : [
        {
          max: 76,
          date: date
        },
        {
          max: 56,
          date: date
        }
      ]
    },
    {
      "name" : "CSS",
      "project" : "5",
      "scores" : [
        {
          max: 86,
          date: date
        },
        {
          max: 36,
          date: date
        },
        {
          max: 56,
          date: date
        },
      ]
    }
  ]
}

是否有一种简单的方法可以确定其他文档是否只与skills数组具有相同/重复的结构?例如具有相同的键,值和数组索引?任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

如果您正在寻找具有相同技能组的开发人员,可以使用$all运算符:

var john = db.developers.findOne(...);
var devs = db.developers.find({ 'skills.name': { $all: john.skills.map(x => x.name) } });

答案 1 :(得分:1)

这是你如何得到的:

collection.aggregate({
    "$group": {
        "_id": "$skills",
        "docs": {
            "$push": "$$ROOT"
        },
        "count": {
            $sum: 1
        }
    }
}, {
    $match: {
        "count": {
            $gt: 1
        }
    }
})