Yaf中如何使用mongodb查询更新。里面运用了$or,$regex。 数据长这样:
- 获取主键:getPrimaryKey();
- 获取属性:getAttributes();
代码如下:
//conversation question
$question = new ConversationQuestionModel();
$questionDatas = $question->find(array('$or'=>array(
array('tag'=>array('$elemMatch'=>array('tags_id'=>array('$regex'=>'^'.$tag_id.',')))),
array('tag'=>array('$elemMatch'=>array('tags_id'=>array('$regex'=>','.$tag_id.',')))),
array('tag'=>array('$elemMatch'=>array('tags_id'=>array('$regex'=>','.$tag_id.'$'))))
)));
if($questionDatas){
foreach ($questionDatas as $questionData){
if(count($questionData->tag)){
foreach($questionData->tag as $quKey => $quTagValue){
$quTags = $quTagValue['tags_id'];
$quTags = trim($quTags,',');
if(substr_count($quTags,',') > 0){
$oldTags = explode(',', $quTags);
$newTages = array_diff($oldTags, array($tag_id));
$tagStr = implode(',', $newTages);
}else{
$tagStr = '';
}
$questionData->tag[$quKey]['tags_id'] = $tagStr;
}
$id = $questionData->getPrimaryKey();
$each = ConversationQuestionModel::findByPk($id);
$each->update($questionData->getAttributes());
}
}
}