MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB намира вложени обекти, които отговарят на критериите

Тъй като масивите са вложени, не можете да използвате основна проекция, както можете с find. Също така, за да "филтрирате" съдържанието на масива от документ, трябва първо да "отвиете" съдържанието на масива. За това използвате рамката за агрегиране:

   $results = $db->genealogical_data->aggregate(array(
       array( '$match' => array(
           'people.search_columns.givenname' => 'Valentine'
       )),
       array( '$unwind' => '$people' ),
       array( '$match' => array(
           'people.search_columns.givenname' => 'Valentine'
       )),
       array( '$group' => array(
           '_id' => '$id',
           'name' => array( '$first' => '$name' ),
           'people' => array( '$push' => '$people' )
       ))
   ));

Точката на първия $match етапът е да намалите документите, които евентуално отговарят на вашите критерии. Вторият път се извършва след $unwind , където действителните елементи на "масив" в документа са "филтрирани" от резултатите.

Последният $group връща оригиналния масив обратно към нормалното, минус елементите, които не отговарят на критериите.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. асоциацията mongomapper пропуска дубликати

  2. как да създадете индекс от mongoose в еластично търсене в node,expressjs

  3. Актуализация на MongoDB Collection:инициализиране на документ със стойности по подразбиране

  4. Как да премахнете дублирани стойности в списък в mongodb

  5. Mongoose Aggregation не филтрира по въведена дата