以下是我的集合中嵌套文档的示例:
{
"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
数组具有相同/重复的结构?例如具有相同的键,值和数组索引?任何帮助将不胜感激。谢谢!
答案 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
}
}
})