如何通过自己的子文档或数组检索文档?

时间:2012-01-28 21:25:17

标签: java mongodb

我有这样的文件结构:

{  
    "_id" : "4e76fd1e927e1c9127d1d2e8",  
    "name" : "***",  
    "embedPhoneList" : [  
        {  
            "type" : "家庭",  
            "number" : "00000000000"  
        },  
        {  
            "type" : "手机",  
            "number" : "00000000000"  
        }  
    ],  
    "embedAddrList" : [  
        {  
            "type" : "家庭",  
            "addr" : "山东省诸城市***"  
        },  
        {  
            "type" : "工作",  
            "addr" : "深圳市南山区***"  
        }  
    ],  
    "embedEmailList" : [  
        {  
            "email" : "********@gmail.com"  
        },  
        {  
            "email" : "********@gmail.com"  
        },  
        {  
            "email" : "********@gmail.com"  
        },  
        {  
            "email" : "********@gmail.com"  
        }  
    ]  
} 

我要做的是通过它的子文档找到该文档,例如email字段中的embedEmailList。 或者,如果我有这样的结构

{  
    "_id" : "4e76fd1e927e1c9127d1d2e8",  
    "name" : "***",   
    "embedEmailList" : [  
        "123@gmail.com" ,  
        "********@gmail.com" ,  
        ]  
} 

embedEmailList是数组,如何找到123@gmail.com

感谢。

1 个答案:

答案 0 :(得分:2)

要搜索数组中的特定值,mongodb支持以下语法:

db.your_collection.find({embedEmailList : "foo@bar.com"});

有关详细信息,请参阅here

要在嵌入对象中搜索值,它支持以下语法:

db.your_collection.find({"embedEmailList.email" : "foo@bar.com"});

有关详细信息,请参阅here