MongoDB: Как я могу вставить массив JavaScript с помощью PHP (вместо объекта)? - PullRequest
2 голосов
/ 26 мая 2011
$update = $col->update(array('_id' => 'test'), array('$push' => array('friends' => 1)), array('safe' => true, 'upsert' => true));
$test = $col->findOne(array('_id' => 'test'));
debug(compact('update', 'test'));

Не работает должным образом.

Я получаю (проверка через RockMongo):

{
   "_id": "test",
   "friends": {
     "0": 1 
   } 
}

Я хочу / ожидаю получить это:

{
   "_id": "test",
   "friends": [
     1 
   ] 
}

Есть идеи?Спасибо!

1 Ответ

6 голосов
/ 26 мая 2011

Некоторое время назад я потратил много времени на устранение неполадок, из-за которых мои данные вставлялись неправильно, только чтобы выяснить, что RockMongo не не показывает данных правильно.

Это правда, потому что RockMongo на самом деле не показывает данные в виде документа Mongo, а вместо этого в виде PHP.

Я обнаружил, что это отличается для пары разных типов данных между Firefox и Chromeпо какой-то причине ... массивы, даты, MongoID

Но, в конце концов, я сделал find () в командной строке, и он был правильным.

Я бы не стал доверять тому, что говорит RockMongo, см. Пример ниже.

Также есть ли причина, по которой вам нужно использовать «сейф»?

Фактические данные

enter image description here

Что RockMongo говорит (неправильно)

enter image description here

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