我有以下对象:
{
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'?
谢谢!
答案 0 :(得分:4)
支持$ elemMatch,但就文档而言,entries
位于用户object
内。因此,至少在您的查询中,您必须放置array('users.entries' => ...)
。另外我不明白为什么你需要使用$ elemMatch。
db.coll.find({"users.entries.username" : "taxacala"})
输出用户名为“taxacala”的文档。