考虑users集合中的MongoDB文档:{ username : 'Alex', tags: ['C#', 'Java', 'C++'] }有没有办法tags从服务器端获取数组的长度(而不将标签传递给客户端)?谢谢!
3 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
如果用户名Alex是唯一的,则可以使用以下代码:
db.test.insert({username:"Alex", tags: ['C#', 'Java', 'C++'] });
db.test.aggregate(
{$match: {username : "Alex"}},
{$unwind: "$tags"},
{$project: {count:{$add:1}}},
{$group: {_id: null, number: {$sum: "$count" }}}
);
{ "result" : [ { "_id" : null, "number" : 3 } ], "ok" : 1 }
慕码人2483693
TA贡献1860条经验 获得超9个赞
我认为使用$ inc或通过计划中的作业来计算每次保存(作为单独的字段)时标签的数量可能更有效。
您也可以使用map / reduce进行此操作(规范示例),但这似乎并不是您想要的。
我不确定是否可以完全按照您的要求进行操作,但是您可以使用$ size查询与特定大小匹配的所有文档...
> db.collection.find({ tags : { $size: 3 }});
那将为您提供带有3个标签的所有文档...
- 3 回答
- 0 关注
- 2062 浏览
添加回答
举报
0/150
提交
取消