2015-10-15 2 views
0

Моя цель состоит в том, чтобы создать внутренний массив основного массива, поиск идентификатора пользователя, как 1 Ниже мои данныеMongoDB мульти массив отдельного массива на поиск

{ "_id" : 2, 
    "name" : "test1", 
    "data" :[{"_id" : "1","file" : "nic", "userid" : [1,2 ]}, 
      {"_id" : "2","file" : "nic1","userid" : [1 ] }, 
      {"_id" : 3,"file" : "nick2","userid" : [1,2 ]} 
]}, 

{ "_id" : 3, 
    "name" : "test2", 
    "data" : [{"_id" : "1","file" : "nic","userid" : [1,2 ] }, 
      {"_id" : "2","file" : "nic1", "userid" : [3,2 ] } 
    ]} 

нужно выйти кладется как

{"_id" : 1,"file" : "nic", "userid" : [1,2 ],"main_name" : "test1","main_id" : 2}, 
{"_id" : 2,"file" : "nic1","userid" : [1 ] ,"main_name" : "test1","main_id" : 2 }, 
{"_id" : 3,"file" : "nick2","userid" : [1,2 ],"main_name" : "test2","main_id" : 3}, 
{"_id" : 1,"file" : "nic","userid" : [1,2 ] ,"main_name" : "test2" ,"main_id" : 3} 
+1

В чем проблема? – m02ph3u5

ответ

1

В основном тот же ответ на ваш last question, но без $group для восстановления массива и вместо этого использовать $project для реструктуризации документа из уже деформированных элементов массива.

$collection->aggregate(array(
    array('$match' => array("data.userid" => 1)), 
    array('$unwind' => '$data'), 
    array('$match' => array('data.userid' => 1)), 
    array(
     '$project' => array(
      '_id' => '$data._id', 
      'nic' => '$data.nic', 
      'user_id' => '$data.user_id', 
      'main_name' => '$name', 
      'main_id' => '$_id' 
     ) 
    ) 
)) 
+0

То же самое, если я хочу получить все записи независимо от userid.how мы можем сделать это –

+0

@sasikanth Ну «то же самое», если у вас есть другие вопросы, тогда [Задайте другой вопрос] (http://stackoverflow.com/questions/ask) (вот как это работает здесь, так как это не дискуссионный форум или форум, а ресурс «Вопрос и ответ», поэтому вам нужно задать однозначный четкий вопрос). Кроме того, неясно, что вы просите без этого, так как в основном весь ваш вопрос пока что касается «фильтрации» результатов с помощью указанного значения «userid». Так почему бы просто не удалить утверждения '$ match', если вы просто хотите все? Или задайте вместо этого другой вопрос. Вот о чем идет речь, –

Смежные вопросы