如何在MongoDB中插入数组值(php)?

时间:2012-08-01 12:34:25

标签: php mongodb

我的MongoDB内容(当我使用find()时)是这样的:

{ "_id" : ObjectId("50072b17b4a6de3b11000001"), "addresses" : [
    {
            "_id" : ObjectId("50072b17b4a6de3b11000004"),
            "address1" : "770 27th Ave",
            "address2" : null,
            "city" : "San Mateo",
            "country" : "United States",
            "country_code" : "US",
            "name" : "home",
            "primary" : true,
            "state" : "California",
            "zip" : "94403"
    }
], "biography" : null, "category_ids" : [ ], "department" : null, "emails" : [
    {
            "_id" : ObjectId("50072b17b4a6de3b11000003"),
            "_type" : "Email",
            "name" : "work",
            "email" : "alan@altimetergroup.com"
    }
 ] }

我需要做的是我需要使用其他数据更新此MongoDB。为此我需要将php中的值作为数组获取并将该数组插入此集合中。如何在php中将这些指定字段的值作为数组获取,以及如何在php中插入这些?

3 个答案:

答案 0 :(得分:0)

$array = $this->collection->findOne(array('_id' => MONGO_ID));
//Update things
$this->collection->update(array('_id' => $array['_id']), $array);

我的示例中的MONGO_ID应代表MongoDB自动分配的'_id'。确保它作为Object发送,而不是作为字符串发送。

答案 1 :(得分:0)

如果要添加其他条目,请添加如下条目:

$this->collection->insert($array_of_data, array('safe' => true));

答案 2 :(得分:0)

对于插入:

$id = new MongoId();
$test->insert(array('t' => 'test', 'email' => array('_id' => $id, 'email' => 'ccc@ccc.com')));

结果:

{ "_id" : ObjectId("5088cba86527044a31000001"), "t" : "test", "email" : { "_id" : ObjectId("5088cba86527044a31000000"), "email" : "ccc@ccc.com" } }

有效:)