MongoDB是一种非关系型数据库,是一种开源的文档式数据库,它的基本操作有许多种,获得数组长度是其中的一个。本文介绍了mongodb如何获得数组长度的几种方法。
一、使用$size操作符
$size是mongodb内置的匹配操作符,可以获得数组的长度。比如,我们想要获得数组字段“tags”的长度,可以这样:
db.getCollection('test').find({},{"tags":1,"_id":0}).limit(1).map(function(doc) { return { tags_count: doc.tags.length }; })
另外,$size还可以用在表达式中,因此可以在aggregation pipeline上使用。例如:
db.getCollection('test').aggregate([
{$project:{tags_count:{$size:"$tags"}}}])
二、使用$slice操作符
$slice操作符一样是用来获得数组装数据长度的,和$size使用方法类似,只是参数要求区别:
db.getCollection('test').find({},{"tags":1,"_id":0}).limit(1).map(function(doc) { return { tags_count: db.test.find({ "tags": { "$slice": [0, 10] } }).count() }; })
另外,$slice也能够用在aggregation pipeline上:
db.getCollection('test').aggregate([
{$project:{tags_count:{$slice:["$tags", 0, 10]}}}])
三、使用$arrayElemAt操作符
$arrayElemAt是一个内置的操作符,它可以从数组中获得指定的元素,同时也能够获得数组的长度:
db.getCollection('test').find({},{"tags":1,"_id":0}).limit(1).map(function(doc) { return { tags_count: db.test.find({"tags": {"$arrayElemAt": [[],[doc.tags.length]]}).count() }; })
另外,$arrayElemAt也能够在aggregation pipeline当中使用:
db.getCollection('test').aggregate([
{$project:{tags_count:{$arrayElemAt:["$tags",[{$size:"$tags"}]]}}}])
以上三种方法都可以成功获得mongodb数组的长度,结合实际项目的需要,应当选择最适合的操作符便可。
本文来源:https://www.yuntue.com/post/168045.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏