dongwen7730 2016-01-27 11:09
浏览 68
已采纳

PHP MongoDB嵌套文档搜索

I have a nested Document which have some language dependent content and I want to search if content have data for specific language and query should return me content else false.

I tried this query option

$data = $collection->findOne(array('original'=>'What is this', 'translation.language'=>'english') );

I am expecting this result:

{
       "language": "english",
       "quote": "What is this"
}

but above query return both language content. Can anyone please share some code also regarding saving and updating data using PHP

My collection:

{
   "_id": ObjectId("56a8844bc56760810e483815"),
   "language": "english",
   "original_key": "What is this",
   "translation": [
     {
       "language": "english",
       "quote": "What is this"
    },
     {
       "language": "spanish",
       "quote": "What is this Spanish"
    }
  ]
}   
  • 写回答

2条回答 默认 最新

  • du0531 2016-01-27 11:37
    关注

    Use the positional $ operator in the projection document of the findOne() method when you only need one particular array element in selected documents:

    // search criteria for nested array
    $query = array(
        'original' => 'What is this', 
        'translation.language' => 'english'
    );
    
    // projection (fields to include)
    $projection =  array('_id' => false, 'translation.$' => true);
    
    $result = $collection->findOne($query, $projection);
    $data = $result->translation;
    var_dump($data);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
  • ¥20 CST怎么把天线放在座椅环境中并仿真
  • ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?
  • ¥15 YOLOv8obb获取边框坐标时报错AttributeError: 'NoneType' object has no attribute 'xywhr'
  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)