我正在開發一個使用Codeigniter和MongoDB的Web應用程序。 在數據庫中我得到了一個文件,如下所示:在MongoDB文檔中查找匹配的數組項目
{
"_id": {
"$id": "4f609932615a935c18r000000"
},
"basic": {
"name": "The project"
},
"members": [
{
"user_name": "john",
"role": "user",
"created_at": {
"sec": 1331730738,
"usec": 810000
}
},
{
"user_name": "markus",
"role": "user",
"created_at": {
"sec": 1331730738,
"usec": 810000
}
}
]
}
我需要同時使用user_name和作用,該文件搜索。現在,當我使用下面的代碼時,我得到了兩個。我只想獲得匹配user_name和role的數組項目。
$where = array (
'_id' => new MongoId ($account_id),
'members.user_id' => new MongoId ($user_id),
'members.role' => $role
);
$this -> cimongo -> where ($where) -> count_all_results ('accounts');
好,爲2.2,你可以使用相同的$ elemMatch標準作爲投影過,那麼你會在你的結果得到的只是匹配的元素。不過要注意的是:當在投影中使用時,elemMatch將僅返回FIRST匹配元素。沒有辦法不幸的返回多個比賽。請參閱:http://docs.mongodb.org/manual/reference/projection/elemMatch/ – UpTheCreek 2013-02-26 12:28:25