使用codeigniter mongodb库进行upserting

时间:2014-02-19 13:37:16

标签: php codeigniter mongodb

我正在Alex Bilbie使用mongodb-codeigniter库。

我有一个名为“user_visits”的集合。我插入如下集合。

$query = $this->mongo_db->insert('user_restaurant_visits',[
    '_id' => 1,
    'user_id' => $user_id,
    'pages_visited' => [    
                'page_id' => $restaurant_id 
                'visited' => [
                                'deal' => $purchase_deal,
                                'ordered' => $purchased_item
                             ]
                        ]
        ]);

现在我想知道的是,

  • 我想通过here中指定的“upsert = true”布尔标志添加文档,如果字段不存在则将插入,如果字段存在则更新。而且我在我使用的库中找不到这样做的方法!我被误导了吗?

  • 这是一个好方法吗?我组织字段的方式有什么不对(我的意思是Schema,正如我们在RDBMS中所说的那样)。我特意问这个是因为,有些人认为嵌套数组比嵌入式文档好。像philnate在他的回答和评论中说here

  • 如果我想要upsert,增加一个字段和addToSet,在同一个查询中,这可能与我目前使用的库有关吗?

如果我错过了什么,请告诉我,我可以在评论中澄清。我是NoSQL DB的新手。 如果这看起来很有意思,我很抱歉。

1 个答案:

答案 0 :(得分:1)

回答你的一个问题:

更新时如何在"Upsert"中使用CodeIgniter

// Where Condition, if any
$this->mongo_db->where(array('condition_key' => 'condition_value'));

// Update Data Array
$this->mongo_db->set($mongoArray); 

// Set Options
$option = array('upsert' => true);

// Call Update Function
$this->mongo_db->update('Collection_Name', $option);

我希望这会对你有所帮助:)。