mongodb取得数组元素中的匹配项目。

  • 2019 年 11 月 4 日
  • 筆記

db.getCollection('forum').find({'_id':ObjectId('5d78ae69212b78725e27a0c3')},{'childboard':{$elemMatch:{'_id':ObjectId('5d78ae6a212b78725e27a0ca')}}})

汗了,本来想把这个语句翻译成php,但是搞来搞出都是选出所有数组。无解了。 后来baidu到一个projection得childboard.$:1..居然可以。。。

具体得mongodb的query string是:

db.getCollection('forum').find({'_id':ObjectId('5d78ae69212b78725e27a0c3'),'childboard._id':ObjectId('5d78ae6a212b78725e27a0d2')},{'childboard.$':1})

翻译成php代码:

        $filter  = [              '_id' => new MongoDBBSONObjectID("5d78ae69212b78725e27a0c3"),              'childboard._id' => new MongoDBBSONObjectID($document->foid),          ];          $options = [              /* Only return the following fields in the matching documents */              'projection' => [                  'childboard.$' => 1,              ],          ];          $mongo = new MongoDBDriverManager(DB_MONGODB);          $query1 = new MongoDBDriverQuery($filter, $options);          $rows   = $mongo->executeQuery(DB_MONGODB_DB.'.forum', $query1);          foreach($rows as $document) {             var_dump($document);          }