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

2019-10-30  本文已影响0人  毛毛v5
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 MongoDB\BSON\ObjectID("5d78ae69212b78725e27a0c3"),
            'childboard._id' => new MongoDB\BSON\ObjectID($document->foid),
        ];
        $options = [    
            /* Only return the following fields in the matching documents */
            'projection' => [
                'childboard.$' => 1,
            ],    
        ];
        $mongo = new MongoDB\Driver\Manager(DB_MONGODB);
        $query1 = new \MongoDB\Driver\Query($filter, $options);
        $rows   = $mongo->executeQuery(DB_MONGODB_DB.'.forum', $query1);
        foreach($rows as $document) {
           var_dump($document);
        }
上一篇 下一篇

猜你喜欢

热点阅读