java - 从 MongoDB 表中获取数组列表的大小

标签 java mongodb

我正在尝试从用户表中获取关注者的数量,该表基本上是一个使用 Java 编程的数组列表。

我正在使用以下查询通过命令行界面获取计数。

db.userinfo.aggregate([{ $project : {followersCount : {$size: "$followers"}}}])

但我无法在 java 中创建与我新手相同的查询。下面是我用 java 编写的代码,我收到 com.mongodb.MongoCommandException: Command failed with error 17124: 'The argument to $size must be an array, but was of type: int' 错误。

AggregateIterable<Document> elements = collectionUserInfo.aggregate(
                Arrays.asList(new BasicDBObject("$project", new       BasicDBObject("followers",
                        new BasicDBObject("$size", new BasicDBObject("followers",1).put("followers",new BasicDBObject("$ifNull", "[]")))))));

谁能帮我解决这个问题

最佳答案

您可以尝试使用 Java 8 和 Mongo Driver 3.x 版本。您应该尽量不要使用旧类型 (BasicDbObject),并尽可能使用 api 方法。

List<Integer> followersCount = collectionUserInfo.aggregate(
            Arrays.asList(Aggregates.project(Projections.computed(
                    "followersCount",
                    Projections.computed("$size", "$followers"))
                    )
            ))
   .map(follower -> follower.getInteger("followersCount"))
   .into(new ArrayList<>());

关于java - 从 MongoDB 表中获取数组列表的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41559457/

相关文章:

java - 做了一个 JFrame,做了一个小程序,不知道如何将两者结合起来?

java - 使用 Hibernate 和 Spring MVC 在级联上保存包

java - javascript 的 'this' 关键字与 java 的 'this' 关键字有何不同?

Mongodb 是否可以聚合对象?

java - 如何使用 OpenShift 中的 JAVA 连接到 MongoDB 服务器?

node.js - 使用 Mongoose 处理 MongoDB 中查找、修改、保存流程的冲突

java - Google App Engine 中请求线程之间的环境共享

java - 用键值对分隔字符串

c# - 如何将 AsQueryable 方法与 MongoDb C# Driver 2.1 异步使用?

python - 通过python mongoengine刷新mongodb集合结构