Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MongoDB嵌套文档搜索_Php_Mongodb - Fatal编程技术网

PHP MongoDB嵌套文档搜索

PHP MongoDB嵌套文档搜索,php,mongodb,Php,Mongodb,我有一个嵌套文档,其中包含一些与语言相关的内容,我想搜索内容是否包含特定语言的数据,查询应返回我的内容,否则返回false 我尝试了这个查询选项 $data = $collection->findOne(array('original'=>'What is this', 'translation.language'=>'english') ); 我期待着这样的结果: { "language": "english", "quote": "What i

我有一个嵌套文档,其中包含一些与语言相关的内容,我想搜索内容是否包含特定语言的数据,查询应返回我的内容,否则返回false

我尝试了这个查询选项

$data = $collection->findOne(array('original'=>'What is this', 'translation.language'=>'english') );
我期待着这样的结果:

{
       "language": "english",
       "quote": "What is this"
}
但上面的查询返回两种语言的内容。任何人都可以分享一些关于使用PHP保存和更新数据的代码吗

我的收藏:

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

我想你应该用mongodb的

这可能行得通。没有测试

db.collection.aggregate([
    {$unwind :translation},
    {$project: {original_key:true,language:true, quote:true}},
    {$match:{original_key:"What is this", language:"english"}}
]);
当所选文档中只需要一个特定数组元素时,请在
findOne()
方法的投影文档中使用运算符:

// 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);
谢谢你的工作:)。您是否也可以共享一些代码以将新语言数据插入现有集合,例如将阿拉伯语子文档插入现有记录?