云服务器网:购买云服务器和VPS必上的网站!

解析mongodb:如何获得数组长度?

Mongodb是一种非关系型数据库,是一种开源的文档式数据库,它的基本操作有许多种,获得数组长度是其中的一个。本文介绍了mongodb如何获得数组长度的几种方法。
一、使用$size操作符
$size是mongodb内置的匹配操作符,可以获得数组的长度。比如,

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 | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注