如何通过子文档中的匹配数据从mongodb集合中获取数据?

时间:2014-11-19 09:54:33

标签: mongodb

我有mongodb集合,其中包含

等数据
   var data = [
{
    name: 'test1',
    attributes: [
        {
            name: 'color',
            value: 'red'
        },
        {
            name: 'size',
            value: 'L'
        }
    ]
},
{
    name: 'test2',
    attributes: [
        {
            name: 'color',
            value: 'blue'
        },
        {
            name: 'size',
            value: 'S'
        }
    ]
},
{
    name: 'test3',
    attributes: [
        {
            name: 'color',
            value: 'red'
        },
        {
            name: 'size',
            value: 'S'
        }
    ]
}

如何查询数据库,以便返回匹配属性名称' color'有价值的红色'和属性名称' size'有价值' L'?

表示应该返回

 var output = [
{
    name: 'test1',
    attributes: [
        {
            name: 'color',
            value: 'red'
        },
        {
            name: 'size',
            value: 'L'
        }
    ]
}

1 个答案:

答案 0 :(得分:2)

您可以在$and查询中使用find运算符。

db.collection.find({$and:[{"attributes.name":"color","attributes.value":"red"}, 
                          {"attributes.name":"size","attributes.value":"L"}]})