我正在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的新手。 如果这看起来很有意思,我很抱歉。
答案 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);
我希望这会对你有所帮助:)。