从子数组中找到文档?

时间:2016-01-16 12:36:45

标签: arrays mongodb mongodb-query

我有一个包含以下文档的集合:

"awards" : {
    "oscars" : [
        {"award": "bestAnimatedFeature", "result": "won"},
        {"award": "bestMusic", "result": "won"},
        {"award": "bestPicture", "result": "nominated"},
        {"award": "bestSoundEditing", "result": "nominated"},
        {"award": "bestScreenplay", "result": "nominated"}
    ],
    "wins" : 56,
    "nominations" : 86,
    "text" : "Won 2 Oscars. Another 56 wins and 86 nominations."
}

我们会在find()命令中使用哪个查询文件来返回my_collection收藏中获得或被提名以获得最佳影片的所有电影?

2 个答案:

答案 0 :(得分:6)

您需要使用dot notation指定嵌入文档的完全匹配,并使用$in运算符选择那些赢得或被提名以获得最佳图片的文档

你不应该在这里使用$or运算符,因为如果并非documentation中提到的索引支持所有子句,它将执行集合扫描。

db.my_collection.find({ 
    'awards.oscars.award': 'bestPicture', 
    'awards.oscars.result': { '$in': [ 'won', 'nominated' ] } 
} )

答案 1 :(得分:1)

根据MongoDB Query documentation,您可以通过将其名称连接到数组的名称来匹配数组中嵌入文档中的字段,如下所示:

    $('#increase').click(function() {
      var one = $('#output').text();
      var increase = 10;
      var output = Number(one) + increase;

      $('#output').text(output.toFixed(2));

    });