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

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

具体得mongodb的query string是:

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

翻译成php代码:

        $filter  = [
            '_id' => new MongoDBBSON ID("5d78ae69212b78725e27a0c3"),
            'childboard._id' => new MongoDBBSON ID($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);
        }
收藏 打印