选择子文档在哪里

时间:2012-10-14 15:12:14

标签: javascript mongodb

这可能是一个愚蠢的问题,但我现在已经花了很长时间。

所以这是我的结构,高度最小化:

{
  name : 'Some dude', 
  deck : [{
    name : 'Awesome card',
    value : 30
  },
  {
    name : 'another awesome card',
    value: 50
  }]
}

我想从卡片中的所有卡片中选择,其中name =='Awesome card',返回此

{
  name : 'Some dude', 
  deck : [{
    name : 'Awesome card',
    value : 30
  }]
}

尝试了大量的命令,比如

  

db.heroes.find({name:“Some dude”},{'deck':1,'deck.name':'Awesome card})

我该如何查询?

3 个答案:

答案 0 :(得分:4)

使用$ elemMatch投影:

db.heroes.find({name : "Some dude"}, {'deck' : {$elemMatch:{name:'Awesome card}}})

请参阅文档here

答案 1 :(得分:1)

您可以使用$位置运算符来标识字段选择中匹配的deck数组元素的索引:

db.heroes.find(
    {name : "Some dude", 'deck.name' : 'Awesome card'}, 
    {_id: 0, name: 1, 'deck.$.name': 1}
);

答案 2 :(得分:-2)

deck = deck.filter(function (card) { return card.name === 'Awesome card' });

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/filter