不太确定如何命名这个问题,但希望解释更清楚
我有一个像
{
_id: "User1",
skills: [
{
ty: "coding",
inf: "c"
},
{
ty: "design",
inf: "photoshop",
},
{
ty: "language",
inf: "french",
},
{
ty: "language",
inf: "german",
},
]
},
{
_id: "User2",
skills: [
{
ty: "coding",
inf: "c"
},
{
ty: "coding",
inf: "scala",
},
{
ty: "spreadsheet",
inf: "excel",
},
{
ty: "language",
inf: "english",
},
]
}
等等,我的问题是选择只有“编码”技能的用户。这是我尝试过的
db.collection.find({"skills.ty":{$nin:["language","design","spreadsheet"]}})
这里的问题是没有固定的技能。现在它是唯一的(语言、设计、编码、电子表格),但将来可能会有更多。
如何编写查询以获取仅具有一种技能的用户,而不管有多少其他技能?即获得只有编码技能但没有其他技能的人
一个推断,如何找到在“c”和“c++”中具有“编码”技能但没有其他人的人?即获得具有 c 和 c++ 编码技能但没有其他编码技能的人,这些用户可能具有其他技能,例如设计
我需要为这些编写函数还是可以编写查询?