为了账号安全,请及时绑定邮箱和手机立即绑定

在MongoDB中查询内部数组大小

在MongoDB中查询内部数组大小

12345678_0001 2019-12-12 14:10:06
考虑users集合中的MongoDB文档:{ username : 'Alex', tags: ['C#', 'Java', 'C++'] }有没有办法tags从服务器端获取数组的长度(而不将标签传递给客户端)?谢谢!
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

如果用户名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 }



查看完整回答
反对 回复 2019-12-14
?
GCT1015

TA贡献1827条经验 获得超4个赞

我认为使用$ inc或通过计划中的作业来计算每次保存(作为单独的字段)时标签的数量可能更有效。


您也可以使用map / reduce进行此操作(规范示例),但这似乎并不是您想要的。


我不确定是否可以完全按照您的要求进行操作,但是您可以使用$ size查询与特定大小匹配的所有文档...


> db.collection.find({ tags : { $size: 3 }});

那将为您提供带有3个标签的所有文档...



查看完整回答
反对 回复 2019-12-14
  • 3 回答
  • 0 关注
  • 722 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信