当我在Robomongo运行时,第一个查询有效。但是,我无法将其转换为PHP。
我已经包含了更新版本,如果我遗漏了任何内容,请通知我。
这可行(MongoDB查询)
db.statusNew.find(
{_id: ObjectId("123")},
{
statuses: {
$elemMatch: {
id : 321
}}
}
).limit(1)
这不起作用(翻译成PHP)
$queryOri = array(
(_id: new MongoId($id)),
(
statuses: (
$elemMatch: (
id : $tweetID['id']
))
)
);
$query = $collection.find($queryOri).limit(1);
已更新!
$collection -> find(
array('_id' => new MongoId($id)),
array(
'statuses' => array(
$elemMatch: (
id: $tweetID['id']
)
)
)
);
数组如下所示:
Array
(
[_id] => MongoId Object
(
[$id] => 123
)
[statuses] => Array
(
[0] => Array
(
[id] => 321
[text] => Tweet no 1
)
[1] => Array
(
[id] => 322
[text] => Tweet no 2
)
[2] => Array
(
[id] => 323
[text] => Tweet no 3
)
)
)
答案 0 :(得分:0)
$collection->find(
array('_id' => new MongoId($id)),
array(
'statuses' => array(
'$elemMatch' => array(
'id'=>$tweetID['id']
)
)
)
);
你必须使用冒号(:)而不是assingment(=>)。在mongodb中,每个花括号都会在php中将其视为数组。希望你得到这个答案。