0

不太确定如何命名这个问题,但希望解释更清楚

我有一个像

{   
_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++ 编码技能但没有其他编码技能的人,这些用户可能具有其他技能,例如设计

我需要为这些编写函数还是可以编写查询?

4

1 回答 1

1

db.collection.find({"skills.ty":"coding"}) 有什么问题?

于 2013-05-17T06:37:53.673 回答