使用MongoDB 3.0 Java驱动程序计数结果

朱利安·威尔斯

我只想获取一些查询结果的数量。我特别想知道过去15分钟内有多少用户在线。因此,我通过以下方式建立了连接:

mongoClient = new MongoClient("localhost", 3001);
database = mongoClient.getDatabase("database1");

然后在我的方法中,我得到了集合并发送了一个查询...:

MongoCollection<Document> users = database.getCollection("users");
users.find(and(gte("lastlogin",xvminago),lte("lastlogin",now)

我什至不确定最后一步是否正确。但是在Javascript和这种.count()操作中似乎很容易,而在Java中却找不到。而且这些文档很奇怪,而且全都有些不同。(我使用MongoDB Java驱动程序3.0)

克列丹

使用MongoCollection的count()方法,应用查询过滤器,该过滤器利用Joda-Time中的Datetime对象简化了Java中的日期操作。您可以在这里查看基本上创建一个距离当前时间15分钟的datetime对象:

DateTime dt = new DateTime();
DateTime now = new DateTime();
DateTime subtracted = dt.minusMinutes(15);

然后使用变量构造一个日期范围查询,以供count()方法使用:

Document query = new Document("lastlogin", new Document("$gte", subtracted).append("$lte", now));
mongoClient = new MongoClient("localhost", 3001);
long count = mongoClient.getDatabase("database1")
                        .getCollection("users")
                        .count(query);

在分片群集上,db.collection.count()如果存在孤立文档或正在进行块迁移,则底层方法可能导致计数不正确。因此,改用aggregate()method更为安全

Iterator<Document> it = mongoClient.getDatabase("database1")
                       .getCollection("users")
                       .aggregate(Arrays.asList(
                            new Document("$match", new Document("lastlogin", 
                                new Document("$gte", subtracted).append("$lte", now))
                            ),
                            new Document("$group", new Document("_id", null)
                                .append("count", 
                                    new Document("$sum", 1)
                                )
                            )
                        )
                    ).iterator();
int count = it.hasNext() ? (Integer)it.next().get("count") : 0;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用MongoDB 3.0 Java驱动程序对结果进行计数

来自分类Dev

使用Java 3驱动程序更新MongoDB

来自分类Dev

等效于 $objectToArray 使用 Mongodb java 驱动程序 3

来自分类Dev

MongoDB:使用Java驱动程序拉

来自分类Dev

如何在MongoDB Java驱动程序3中上载文档

来自分类Dev

如何在MongoCollection Java驱动程序3中执行MongoDB findAndModify查询?

来自分类Dev

MongoDB Java驱动程序:MongoCore驱动程序与MongoDB驱动程序与MongoDB异步驱动程序

来自分类Dev

Mongo Java驱动程序3-使用扩展“文档”的对象

来自分类Dev

MongodDB Java驱动程序v3-如何使用投影创建光标?

来自分类Dev

MongoDB使用Java驱动程序版本3.0更新

来自分类Dev

MongoDB:使用Java驱动程序按ObjectId查询

来自分类Dev

如何使用MongoDB 3.0 Java驱动程序执行聚合

来自分类Dev

如何在MongoDB Java驱动程序中使用sureIndex

来自分类Dev

聚合查询中的Mongodb Java驱动程序使用限制

来自分类Dev

如何使用Java驱动程序查询mongodb

来自分类Dev

无法使用Heroku上的Java驱动程序与MongoDB连接

来自分类Dev

MongoDB Java驱动程序记录查询

来自分类Dev

关于MongoDB Java驱动程序的困惑

来自分类Dev

MongoDB的$ setIntersection与Java驱动程序

来自分类Dev

MongoDB Java驱动程序-对象类型

来自分类Dev

MongoDB异步Java驱动程序find()

来自分类Dev

mongodb java 驱动程序 pullByFilter

来自分类Dev

如何通过Java驱动程序从MongoDB中的不同列表中排序结果?

来自分类Dev

使用通道数3的Linux ALSA驱动程序

来自分类Dev

Ring 0和Ring 3驱动程序有什么区别?

来自分类Dev

从2.0 MongoDb C#驱动程序获取结果

来自分类Dev

节点Mongodb驱动程序:聚合结果不同

来自分类Dev

MongoDB Perl驱动程序:聚合后的结果不同

来自分类Dev

C#Mongodb驱动程序-如何在位置0的数组中插入元素

Related 相关文章

  1. 1

    使用MongoDB 3.0 Java驱动程序对结果进行计数

  2. 2

    使用Java 3驱动程序更新MongoDB

  3. 3

    等效于 $objectToArray 使用 Mongodb java 驱动程序 3

  4. 4

    MongoDB:使用Java驱动程序拉

  5. 5

    如何在MongoDB Java驱动程序3中上载文档

  6. 6

    如何在MongoCollection Java驱动程序3中执行MongoDB findAndModify查询?

  7. 7

    MongoDB Java驱动程序:MongoCore驱动程序与MongoDB驱动程序与MongoDB异步驱动程序

  8. 8

    Mongo Java驱动程序3-使用扩展“文档”的对象

  9. 9

    MongodDB Java驱动程序v3-如何使用投影创建光标?

  10. 10

    MongoDB使用Java驱动程序版本3.0更新

  11. 11

    MongoDB:使用Java驱动程序按ObjectId查询

  12. 12

    如何使用MongoDB 3.0 Java驱动程序执行聚合

  13. 13

    如何在MongoDB Java驱动程序中使用sureIndex

  14. 14

    聚合查询中的Mongodb Java驱动程序使用限制

  15. 15

    如何使用Java驱动程序查询mongodb

  16. 16

    无法使用Heroku上的Java驱动程序与MongoDB连接

  17. 17

    MongoDB Java驱动程序记录查询

  18. 18

    关于MongoDB Java驱动程序的困惑

  19. 19

    MongoDB的$ setIntersection与Java驱动程序

  20. 20

    MongoDB Java驱动程序-对象类型

  21. 21

    MongoDB异步Java驱动程序find()

  22. 22

    mongodb java 驱动程序 pullByFilter

  23. 23

    如何通过Java驱动程序从MongoDB中的不同列表中排序结果?

  24. 24

    使用通道数3的Linux ALSA驱动程序

  25. 25

    Ring 0和Ring 3驱动程序有什么区别?

  26. 26

    从2.0 MongoDb C#驱动程序获取结果

  27. 27

    节点Mongodb驱动程序:聚合结果不同

  28. 28

    MongoDB Perl驱动程序:聚合后的结果不同

  29. 29

    C#Mongodb驱动程序-如何在位置0的数组中插入元素

热门标签

归档