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