PHP + MongoDB - 从集合内部的数组中获取条目,$ elemMatch无法正常工作

时间:2013-11-27 15:45:35

标签: php mongodb mongodb-query

我有以下对象:

{
    users: {
        _id: "users",
        entries: 
        [
            {
                _id: 1,
                username: "taxicala",
                password: "password"
            },
            {
                _id: 2,
                username: "guest",
                password: "guest"
            }
        ]
    }
}

我想只选择一个位于“entries”数组中的用户。我正在尝试以下方法:

$entry = $this->_users->find(
             array('entries' => 
                 array('$elemMatch' => 
                     array('username' => 'taxicala')
                 )
             )
         );

我得到的结果是一个空对象:

{ }

我无法找到任何关于谷歌或此处的线索。难道我做错了什么?我错过了什么吗?还是PHP不支持'$ elemMatch'?

谢谢!

1 个答案:

答案 0 :(得分:4)

支持$ elemMatch,但就文档而言,entries位于用户object内。因此,至少在您的查询中,您必须放置array('users.entries' => ...)。另外我不明白为什么你需要使用$ elemMatch。

db.coll.find({"users.entries.username" : "taxacala"})输出用户名为“taxacala”的文档。