在MongoDB中查询内部数组大小

考虑users集合中的MongoDB文档:


{ username : 'Alex', tags: ['C#', 'Java', 'C++'] }

有没有办法tags从服务器端获取数组的长度(而不将标签传递给客户端)?


谢谢!


12345678_0001
浏览 731回答 3
3回答

胡说叔叔

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

GCT1015

我认为使用$ inc或通过计划中的作业来计算每次保存(作为单独的字段)时标签的数量可能更有效。您也可以使用map / reduce进行此操作(规范示例),但这似乎并不是您想要的。我不确定是否可以完全按照您的要求进行操作,但是您可以使用$ size查询与特定大小匹配的所有文档...> db.collection.find({ tags : { $size: 3 }});那将为您提供带有3个标签的所有文档...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB