我有一些网址。
在添加新网址时,我想检查它们是否已经添加,如果不是这样的话,请添加它。(网址是唯一的)
$db->url->find(array('url' => $linkurlcache));
$db->url->insert(array('url' => $linkurlcache));
这是我尝试过的(非常糟糕)
$var = $db->url->find(array('url' => $linkurlcache))->limit(1);
foreach($var as $var1){if($var1['url'] == $linkurlcache){$j = 0;}else{$j = 1;}}
if($j == 0){
$db->url->insert(array('url' => $linkurlcache));
}else{
echo "exists";
}
我正在从MySQL迁移(使用MySqlDb类):
$Db->where('url', $linkurlcache);
if($results = $Db->get('tbl_url')){echo "exists";}else{
$insertData = array('url' => $linkurlcache);
if ($Db->insert('tbl_url', $insertData)){echo "added";}
echo $linkurlcache;
};
我在他们的文档上(在MongoDB.org和PHP.net上)也在堆栈溢出上查看,但我找不到解决方案。
您可以帮助我解决方案或智能解决方法。
答案 0 :(得分:2)
除了JohnnyHK关于使用findOne()
检查文档是否存在的建议之外,还有一些其他选项,具体取决于您的文档结构:
1)如果您的urls
每个文档存储一个,请使用upsert
,如果网址不存在则会插入;如果存在,则会更新现有文档。
2)如果您的urls
存储在文档中的数组中,请使用$addToSet
,只有在数组中不存在该值时才会追加该文件。
答案 1 :(得分:0)
使用findOne
代替更简洁:
$var = $db->url->findOne(array('url' => $linkurlcache));
if ($var == NULL) {
$db->url->insert(array('url' => $linkurlcache));
}else{
echo "exists";
}