2015-06-05 3 views
0

Я пытаюсь воспроизвести следующий рабочий запрос - из mongo console - используя mongo-odm.Использование агрегата с DBref и Mongo-ODM

db.Record.aggregate([ {$match: {member: DBRef("Member", ObjectId("556e5dbfa10fdb0ddc0041c5"), "doctrine_odm")}}, {$sort: {timestamp: -1}}, {$group : {_id : "$details.type", firstRecord: {$first: "$_id"}}} ]) 

Образец записи является

{ 

"_id" : ObjectId("556e5dbfa10fdb0ddc0041c8"), 

"member" : DBRef("Member", ObjectId("556e5dbfa10fdb0ddc0041c5"), "doctrine_odm"), 

"timestamp" : ISODate("2015-06-03T01:51:59Z"), 

"details" : [ 

{ 

"accountNumber" : "101", 

"type" : "premium" 

} 

] 

} 

Я попробовал несколько форматов и последняя - до сих пор не работает - это как этот

$collection = $dm->getDocumentCollection('Record'); 
$pipeline = array(
array(
'$match' => array(
"member" => \MongoDBRef::create("Member", "556e5dbfa10fdb0ddc0041c5", "doctrine_odm") 
) 
), 
); 

$results = $collection->aggregate($pipeline); 

Спасибо.

ответ

0

Оказывается, что идентификатор должен быть Mongoid, поэтому, если я использую этот формат

$pipeline = array(
array(
'$match' => array(
"member" => \MongoDBRef::create("Member", new \MongoId("556e5dbfa10fdb0ddc0041c5"), "doctrine_odm") 
) 
), 
); 

Он работает.

Смежные вопросы