在MongoDB中的findOne上添加字段

时间:2016-01-04 14:03:48

标签: php mongodb

我需要在findOne操作上添加一个字段,该字段将包含文档内部数组的大小 例如:

{ "_id": "1"
"children": [1,2,3]
}

我想在findOne操作后得到一个新的字段名“numOfChildren”:3。 这可能吗?

更新: 我无法按照@chridam的建议去做,因为我需要对数组进行切片 整个查询:

$children = $this->_childrenCollection->findOne(
                    array('_id' => new MongoId($id)),
                    array('children' => array('$slice' => 100))
                );

1 个答案:

答案 0 :(得分:0)

您最好的选择是使用aggregation framework,特别是$project管道运算符,该运算符使用$size运算符来计算数组的大小,将结果投影到新的字段。

要获得与console.log ($scope.current_user.following)方法类似的单个结果,请使用 toArray() 方法从 aggregate() 方法:

findOne()

PHP示例实现:

var pipeline = [
    {
        "$project" : {          
            "children": 1,
            "numOfChildren": {
                "$size": "$children"
            }
       }
    }
];

var resultArray = db.collection.aggregate(pipeline).toArray();

if (resultArray.length > 0) { printjson (resultArray[0]); }