在mongo数据库中插入数据后输出奇怪的输出

时间:2014-04-11 06:35:30

标签: php mongodb

当我向mongoDB插入一个数组时,我得到了一个奇怪的输出。这是我插入的数组:

Array
(
    [category_id] => Array
        (
            [id] => -5235252552
            [name] => TestCategory
        )
    [data1] => D01
    [data2] => I
    [data3] => 0
)

我这样做的方式是:

  $mongo->db->selectCollection($mongoTable)->insert(
                                    array(
                                      $data,
                                    )
                                );

这是我在数据库中的输出:

array (
  '_id' => new MongoId("53478c1eea1522a3777059b3"),
  '0' => // This don't needs to be here''
  array (
    'category_id' => 
    array (
      'id' => '-5235252552',
      'name' => 'TestCategory',
    ),
    'data1' => 'D01',
    'data2' => 'I',
    'data3' => '0',
  ),
)

正如你所看到的,我的数据库中有一个奇怪的键,我不需要它。所以,零(' 0')不需要在那里。我希望获得的数据库结果是:

array (
  '_id' => new MongoId("53478c1eea1522a3777059b3"),
  'category_id' => 
    array (
      'id' => '-5235252552',
      'name' => 'TestCategory',
    ),
    'data1' => 'D01',
    'data2' => 'I',
    'data3' => '0',
  ),
)

提前致谢

4 个答案:

答案 0 :(得分:1)

您插入了数组,因此请将其更改为

$mongo->db->selectCollection($mongoTable)->insert($data);

你会得到正确的输出。关键是特殊的mongoDB对象,它是必需的并且是自动生成的。

答案 1 :(得分:0)

你的插件将它包装成一个数组(),所以MongoDB是对的。不要换行,只需插入$ data。

答案 2 :(得分:0)

作为另一个例子,即使MongoDB为你添加_id值,你所做的实际上是这样的:

$data = array(
  '_id' => "123", array(
  'category_id' => array(
      'id' => '-5235252552',
      'name' => 'TestCategory',
  ),
  'data1' => 'D01',
  'data2' => 'I',
  'data3' => '0',
));

echo json_encode( $data, JSON_PRETTY_PRINT ) ."\n";

这只是为了向您展示会发生什么。所以再次没有添加_id你想要的数据是这样的:

$data = array(
  '_id' => "123",
  'category_id' => array(
      'id' => '-5235252552',
      'name' => 'TestCategory',
  ),
  'data1' => 'D01',
  'data2' => 'I',
  'data3' => '0',
);

echo json_encode( $data, JSON_PRETTY_PRINT ) ."\n";

所以当你添加到mongo时,只需这样做:

$mongo->db->selectCollection($mongoTable)->insert($data):

然后一切都很好。

答案 3 :(得分:0)

$m = new MongoClient("localhost");

$ datab = $ m-> selectDB(“测试”);
$ collection = $ datab-> selectCollection(“Users”);

//在此处插入数据

$ datab = $ collection-> insert($ data,array('$ data'=> 1));

$ results = $ collection-> find();

foreach($结果为$ test){
    的print_r($测试);
}