san*_*zer 4 mongodb mongodb-query
我试图只计算每个文档在Mongo中的子文档。
使用可以很容易地获得集合中的文档db.users.find().length()。我想做类似的事情db.users.projects.find().length()。我怎样才能做到这一点?
编辑:
我想要的结果是知道每个用户有多少个项目……类似:
{_id: 123, projects: 4}
用户文档示例:
{
_id:{$oid: 123},
username: johnsmith,
projects: [{$oid: 456}, {$oid: 789}]
}
Run Code Online (Sandbox Code Playgroud)
根据@ n9code,您将需要聚合框架。但是,您可以使用以下命令轻松地计算子文档$size:
db.users.aggregate([{
$project: {
_id: '$_id',
totalProjects: { $size: "$projects" }
}
}]);
Run Code Online (Sandbox Code Playgroud)
哪个应该返回如下内容:
{ "_id" : ObjectID(...), "totalProjects" : 89 }, ...
Run Code Online (Sandbox Code Playgroud)
$ size将返回projects每个文档的数组长度,而$ project会更改文档的格式以包含totalProjects为projects数组的大小。
bag*_*rat -1
你需要 MongoDBAggregation Framework在这里:
db.users.aggregate({$unwind: '$projects'}).count()
Run Code Online (Sandbox Code Playgroud)
这将展开projects集合中每个文档中的数组字段,这将是子文档的总数projects。
| 归档时间: |
|
| 查看次数: |
4588 次 |
| 最近记录: |