如何查询某些子文档mongodb

时间:2014-01-15 10:44:25

标签: mongodb database

有一个colloction,每个文档有多个子文档,如下所示:

db.test.insert(
{
    "username" : " user1",
    "Items" : [ 
        {
            "name" : "Total",
            "value" : 53951
        }, 
        {
            "name" : "n1",
            "value" : 5711
        }, 
        {
            "name" : "n2",
            "value" : 5477
        }, 
        {
            "name" : "n3",
            "value" : 11444
        }
    ]
})
db.test.insert(
{
    "username" : " user2",
    "Items" : [ 
        {
            "name" : "Total",
            "value" : 43951
        }, 
        {
            "name" : "n1",
            "value" : 5011
        }, 
        {
            "name" : "n2",
            "value" : 5117
        }, 
        {
            "name" : "n3",
            "value" : 1444
        }
    ]
})
db.test.insert(
{
    "username" : " user3",
    "Items" : [ 
        {
            "name" : "Total",
            "value" : 51421
        }, 
        {
            "name" : "n1",
            "value" : 5241
        }, 
        {
            "name" : "n2",
            "value" : 1477
        }, 
        {
            "name" : "n3",
            "value" : 9244
        }
    ]
})

我想选择名称为“Total”的项目如下:

{
    "username" : " user1",
    "Items" : [ 
        {
            "name" : "Total",
            "value" : 53951
        }
    ]
}

{
    "username" : " user2",
    "Items" : [ 
        {
            "name" : "Total",
            "value" : 43951
        }
    ]
}

{
    "username" : " user3",
    "Items" : [ 
        {
            "name" : "Total",
            "value" : 51421
        }
    ]
}

我使用了db.test.find({"Items.name":"Total"},{"Items.name":1,"Items.value":1})之类的一些查询。但它不正确。 有什么办法,或者我应该改变数据结构?

1 个答案:

答案 0 :(得分:0)

db.test.find({Items:{$elemMatch:{name:'Total'}}});

有关详细信息,请查看MongoDB docs