当我向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',
),
)
提前致谢
答案 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($测试);
}