我需要在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))
);
答案 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]); }