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); }