美文网首页
MongoDB获取数组的长度

MongoDB获取数组的长度

作者: gdyycn | 来源:发表于2020-04-04 01:45 被阅读0次

文档

{    

    "_id" : "559581876459065623", 

    "articleId" : "559581876487065600",

    "likedUsers" : [

        {

            "userId" : "553535472413052928", 

            "time" : ISODate("2020-03-31T15:17:07.312+0000") 

      }, 

        {

            "userId" : "5496342767197265001", 

            "time" : ISODate("2020-03-31T16:20:02.633+0000")

        }   

    ]}

需求

获取articleId为“559581876487065600”的文档中likedUsers数组的长度

实现

用Mongodb查询语言实现

"match"指定匹配条件,“project”指定要返回的字段(对于JSON来说是Key);“$size”用于求likedUser数组的大小(长度),对应字段是count(可以把它看做是SQL查询语句中AS后面的别名)

db.articleLikes.aggregate(

[

  {

      $match:{

        articleId: "559581876487065600"

      }

  }, 

{ 

      $project:{ 

          count: {

              $size: "$likedUsers"

          }

      }

  }

])

用MongoTemplate实现(Spring/SpringBoot)

public Integer getLikedCount(String articleId) {

    // 查询条件

    AggregationOperation where = Aggregation.match(Criteria.where("articleId").is(articleId));

    // likedUsers为数组字段名称,count为结果字段的别名

    AggregationOperation project = Aggregation.project().andExpression("{$size: '$likedUsers'}").as("count");

    // 聚合操作

    List<AggregationOperation> operations = new ArrayList<>();

    operations.add(where);

    operations.add(project);

    Aggregation aggregation = Aggregation.newAggregation(operations); 



    / / 执行聚合操作,"articleLike"为集合名称,Document.class为返回结果类型

    AggregationResults<Document> results = mongoTemplate.aggregate(aggregation,"articleLike", Document.class);

    // 结果

    Document doc = results.getUniqueMappedResult();

    if(doc != null){

        return (Integer) doc.get("count");

    }

    return 0;

}

相关文章

  • MongoDB获取数组的长度

    文档 需求 获取articleId为“559581876487065600”的文档中likedUsers数组的长度...

  • MongoDB 获取数组字段的长度

    如果有以下数据,我们想获取数字字段arrayfield的长度,该怎么办呢? 虽然我们可以直接查询该字段的内容然后获...

  • shell数组

    数组创建方法 输出整个数组 获取数组元素个数,方法与获取字符串长度的方法相同 获取数组单个元素的长度

  • Java--size()、length、length()

    size() : 获取泛型集合的长度 length : 获取数组的长度 length : 获取字符串的长度。

  • 数组

    var names = ["one", "two"];1、获取数组的长度:数组名.length;2、数组长度可变化...

  • 像shell数组追加元素的小技巧

    因为shell 数组没有追加函数可以利用数组的长度来追加元素获取数组的长度:${#arr[*]}

  • JS笔记10:JS数组

    1、数组概念 获取数组长度 二维数组 2、获取数组元素 通过下标获取?多维数组如何提取console.log(ar...

  • Dart入门02 -- 数组与字典

    数组 Dart语言中,List类表示数组; 数组的初始化 数组的常用方法 获取数组长度 获取数组的第一个元素 获取...

  • JS中各种遍历方法

    数组遍历方法 for循环 (★★★☆☆) 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果...

  • length,length(),size()区别

    1、length length属性:获取数组的长度 2、length() length()方法:获取字符串长度 3...

网友评论

      本文标题:MongoDB获取数组的长度

      本文链接:https://www.haomeiwen.com/subject/awyrphtx.html