我正在使用用于mongo db (https://github.com/alexbilbie/codeigniter-mongodb-library/tree/v2)的alex bilbie库。我不知道如何使用这个库来形成elemMatch查询。
我需要将其转换为alexs lib。
db.centers.find(
{
'_id': ObjectId('516d3ae30074d35600000001')
},
{
'locations' : {
'$elemMatch' : { "id" : ObjectId("51b595eabe55b59630000000") }
}
}
)发布于 2013-06-11 19:05:48
解决方案是:
$m = new Mongo();
$collection = $m->selectDB('production')->selectCollection("centers");
$array = array('_id' => new MongoId('516d3ae30074d35600000001'));
$project = array(
'locations' => array(
'$elemMatch' => array('id' => new MongoId('51b595eabe55b59630000000'))
)
);
$cursor = $collection->find($array, $project);
foreach ($cursor as $doc) {
print_r($doc);
}按照Alex lib的说法:您需要将$project数组放在select方法中,而不是where中
发布于 2013-06-10 23:30:00
根据他的repo中的文档,这对你不起作用吗:
$this->mongo_db
->where(array(
'_id' => ObjectId('516d3ae30074d35600000001'),
'locations' => array( '$elemMatch' => array( "id" : ObjectId("51b595eabe55b59630000000") ) )
))
->get('centers');edit:我最初是根据您的问题中的查询复制的。是否确定$elemMatch中的id属性不应为_id
https://stackoverflow.com/questions/17027270
复制相似问题