2011-10-14 2 views
0

Codeigniter와 MongoDB를 사용하여 API를 개발 중입니다. 사용자 문서 나는 다음과 같은 배열이라는 항목이 있습니다. 사용자 fullname 및 ID를 포함하는 하위 문서를이 배열에 푸시해야합니다.MongoDB를 사용하여 서브 문서를 배열로 푸는 방법

매번 하위 문서가 하위 배열이되도록 노력합니다.

나는 알렉스 Bilbie의 MongoDB의 라이브러리를 사용하고이 내 쿼리입니다 :

$this->mongo_db->where(array('_id'=>$user_id))->push('following', array("{id: 'aa', fullname: 'James Bond'}"))->update('users'); 

내가 이렇게 될 결과가 필요 내가 해결

:

following : [ 
    { fullname : "James", id : aa}, 
    { fullname : "Jane", id : bb} 
    ] 

업데이트 이 방법 :

$this->mongo_db->where(array('_id'=>$user_id))->push('following', array('fullname'=>'Earl Spencer','id'=>'bb'))->update('users'); 

답변

0
String fullname = "James"; 
    String id = "aa" 
    var myResult = this.mongo_collections_Users.FindAndModify(

    Query.And(Query.EQ("_id", new ObjectId(id_as_string))), 
    SortBy.Ascending("_id"), 
    Update.PushWrapped<item_following>("following", new item_following(fullname, id))), 
    true 
); 

이 코드는 "사용자"컬렉션에 문서를 특정 _id가 있습니다. 그러면 새 항목을 "다음"배열에 "추가"(추가)합니다.

새로운 "item_following"대신 User에 대한 참조를 저장하려면 "MongoDbRef"를 사용하십시오.

호프가 내가 당신을 도울 수 있기를 바랍니다.