如何使用Laravel 4将对象插入到MongoDB文档中

我是Laravel MongoDB的新手我想在这里提一个问题,我的Mongo文档的大纲应该是

{ _id:****, subscriptions: [{list_id: "14Q3"}, {list_id: "153"}], offers: [ { targetURL: "www.qwerty.com", title: "25% discount" }, { targetURL: "www.abcd.com", title: "55% discount" } ], } 

我已经使用下面的代码来插入列表ID(成功)。

 DB::connection('mongodb')->collection('subscribers')->insert(array( '_id' => $subscriber->device_id, 'subscriptions' => array('list_id' => $subscriber->list1_id), )); 

但是,当我尝试推另一个list_id作为下一个对象显示错误。 我使用下面的代码进行推送

 DB::connection('mongodb')->collection('subscribers') ->push('subscriptions', array('list_id' => $subscriber->list1_id)); 

我不知道我的代码是对还是错。 我需要将数据存储为上面给出的轮廓。 这是我的实际问题。 请纠正我….

我的控制器是给出如下,我为每个订户创build新的集合。 问题是第二个“如果”的声明

 public function store() { $newsubscriber = Input::json(); //DB::connection('mongodb')->collection($newsubscriber->get('device_id'))->delete(); $result = Subscriber::where('list1_id',$newsubscriber->get('list_id'))->where('device_id',$newsubscriber->get('device_id'))->get(); if (!$result->isEmpty()) { return "You are already a subscriber of this List"; } else{ $result1 = Subscriber::where('device_id',$newsubscriber->get('device_id'))->get(); $subscriber = new Subscriber(); $subscriber->list1_id = $newsubscriber->get('list_id'); $subscriber->device_id = $newsubscriber->get('device_id'); $subscriber->subtype = 1; $subscriber->save(); if (!$result1->isEmpty()) { DB::connection('mongodb')->collection($subscriber->device_id)->push('subscriptions', array('list_id' => $subscriber->list1_id)); return "Subscribed successfully 1"; } else{ DB::connection('mongodb')->collection($subscriber->device_id)->insert(array('_id' => $subscriber->device_id,'subscriptions' => array('list_id' => $subscriber->list1_id), )); return "Subscribed successfully 2"; } } } 

首先,我使用了以下API

curl -H "Content-Type: application/json" -d '{"list_id":"2","device_id":"987654321"}' http://localhost/lemmeknw/public/index.php/api/v1 /订阅

这返回“订阅成功2”

但是当我第二次使用API​​时

curl -H "Content-Type: application/json" -d '{"list_id":"1","device_id":"987654321"}' http://localhost/lemmeknw/public/index.php/api/v1 /订阅

有错误“出错了”

我对拉拉维尔了解不多,但我在这里看到:

 DB::connection('mongodb')->collection('subscribers')->insert(array( '_id' => $subscriber->device_id, 'subscriptions' => array('list_id' => $subscriber->list1_id), )); 

看起来像创build对象{list_id: <subscriber-list1_id>}而不是一个对象的数组[{list_id: <subscriber-list1_id>}] 。 所以当你尝试使用push操作

 DB::connection('mongodb')->collection('subscribers') ->push('subscriptions', array('list_id' => $subscriber->list1_id)); 

这是尝试push一个对象,而不是一个数组。 我的猜测是,你将需要修改你的插入

 DB::connection('mongodb')->collection('subscribers')->insert(array( '_id' => $subscriber->device_id, 'subscriptions' => array(array('list_id' => $subscriber->list1_id)), ));