2014-01-24 2 views
0

Я пытаюсь получить данные из коллекции, сопоставляя ее идентификатор своего поддокумента, но не давая мне никакого результата. вот мой кодПроблема в данных retrieivg путем сопоставления идентификатора поддокумента с использованием mongodb-php

$usrcollection = $db->users;  
$where = array('following'=> array('followerid' => '52a97985f770dfdc04000000', 'type' => "'user'")); 
$usrcursor = $usrcollection->find($where); 

я попытался с помощью $ elemMatch как хорошо, но результат тот же

$where = array('following' => array(
      '$elemMatch' => array(   
      'followerid' => '52a97985f770dfdc04000000', 
      'type' => "'user'") 
      )  
     ); 

Любой, пожалуйста, помогите мне решить эту проблему.

Вот моя схема

{ 
    "_id": ObjectId("52cd49c2f770df1c0b000001") 
    "datejoined": ISODate("2014-01-08T12:51:14.0Z"), 
    "firstname": "Huston", 
    "followers": NumberInt(1), 
    "following": [ 
    { 
     "followerid": "52a97985f770dfdc04000000", 
     "type": "user", 
     "followedon": ISODate("2014-01-23T07:08:43.0Z") 
    } 
    ], 
    "lastname": "Ted", 
    "trackscount": NumberInt(0) 
    } 
    { 
    "_id": ObjectId("529726caf770dff815000001") 
    "datejoined": ISODate("2014-01-08T12:51:14.0Z"), 
    "firstname": "Ted", 
    "followers": NumberInt(3), 
    "following": [ 
    { 
     "followerid": "528c62406a542f7c6a6bf522", 
     "type": "track", 
     "followedon": ISODate("2014-01-23T06:53:13.0Z") 
    }, 
    { 
     "followerid": "52a97985f770dfdc04000000", 
     "type": "user", 
     "followedon": ISODate("2014-01-23T07:08:43.0Z") 
    }, 
    { 
     "followerid": "52a97985f770dfdc04000023", 
     "type": "track", 
     "followedon": ISODate("2014-01-24T06:23:30.0Z") 
    } 
    ], 
    "lastname": "Terry", 
    "trackscount": NumberInt(0) 
} 

ответ

0

Вот ответ на мой вопрос, который я нашел. Может быть, это было бы полезно для других. Вложенные идентификаторы документов должны иметь тип объекта MongoId, в моем случае я использовал followerid как простую строку, но это должен быть объект MongoId. поэтому схема должна быть

{ 
    "_id": ObjectId("52cd49c2f770df1c0b000001") 
    "datejoined": ISODate("2014-01-08T12:51:14.0Z"), 
    "firstname": "Huston", 
    "followers": NumberInt(1), 
    "following": [ 
    { 
     "followerid": ObjectId("52a97985f770dfdc04000000"), 
     "type": "user", 
     "followedon": ISODate("2014-01-23T07:08:43.0Z") 
    } 
    ], 
    "lastname": "Ted", 
    "trackscount": NumberInt(0) 
    } 
    { 
    "_id": ObjectId("529726caf770dff815000001") 
    "datejoined": ISODate("2014-01-08T12:51:14.0Z"), 
    "firstname": "Ted", 
    "followers": NumberInt(3), 
    "following": [ 
    { 
     "followerid": ObjectId("528c62406a542f7c6a6bf522"), 
     "type": "track", 
     "followedon": ISODate("2014-01-23T06:53:13.0Z") 
    }, 
    { 
     "followerid": ObjectId("52a97985f770dfdc04000000"), 
     "type": "user", 
     "followedon": ISODate("2014-01-23T07:08:43.0Z") 
    }, 
    { 
     "followerid": "52a97985f770dfdc04000023", 
     "type": "track", 
     "followedon": ISODate("2014-01-24T06:23:30.0Z") 
    } 
    ], 
    "lastname": "Terry", 
    "trackscount": NumberInt(0) 
}