Как вставить поддокумент в массив, используя MongoDB - PullRequest
0 голосов
/ 14 октября 2011

Я занимаюсь разработкой API с использованием Codeigniter и MongoDB.В пользовательском документе я получил элемент с именем follow, который является массивом.Мне нужно вставить вложенный документ, содержащий полное имя пользователя и идентификатор пользователя, в этот массив.

Каждый раз, когда я пытаюсь получить поддокумент, он становится вложенным массивом.

Я использую библиотеку Алекса Билби 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');

1 Ответ

0 голосов
/ 14 октября 2011
  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", пожалуйста, используйте "MongoDbRef".

Надеюсь, что смогу вам помочь,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...