1

我在使用 MongoDB 在 Lithium 中执行 upsert 时遇到了一点问题。更新工作正常,但它不会插入。我的代码是:

Feeds::update(
    array('data' =>
        array('user_id' => 
            array('$addToSet' => $user["_id"]) 
        )
    ), //what to change
    array('conditions' => 
        array('address' => $address)
    ), //where to change it
    array('upsert' => true)
);

这应该对应于 MongoDB 查询:

db.osmblags.update( { "address" : "test address" }, { $addToSet : { "user_id" : "56" } }, { upsert : true } );

查询和 PHP 代码都不起作用。他们是 $addToSet 的替代品,它不允许 user_ids 数组中的重复项吗?

(对不起,我对 Lithium 和 Mongo 都是新手

4

1 回答 1

5

的前两个参数似乎存在问题update()。这些参数用于数据和条件,因此您不需要传递的数组中的那些键。尝试这个。

Feeds::update(
    array('$addToSet' => 
        array('user_id' => $user["_id"]) 
    ), //what to change
    array('address' => $address), //where to change it
    array('upsert' => true)
);

我不确定为什么查询不能直接在 MongoDB 中为您工作。这对我来说很好。

于 2013-04-19T13:49:59.480 回答