java - 在 mongodb 中按日期对值进行排序

标签 java mysql mongodb mongodb-query

我是 mongodb 的新手,我正在尝试按日期对所有行进行排序。我有来自混合来源的记录,我试图分别对其进行分类。在为某些记录写入数据库时​​,我没有更新 dateCreated。后来我发现并将 dateCreated 添加到数据库中的所有记录中。假设我总共有 4000 条记录,前 1000 条我没有 dateCreated。最新的 3000 有那个专栏。在这里,我试图使用 dateCreated 列获取最后更新的记录。这是我的代码。

db.person.find({"source":"Naukri"}&{dateCreated:{$exists:true}}).sort({dateCreated: 1}).limit(10)

此代码返回一些结果(来自那 1000 条记录),我根本看不到 dateCreated 列。此外,如果我在此处更改 (-1) {dateCreated: -1},我将从其他来源获得结果,但不是 Naukri。

所以我需要帮助,

  1. 如何按 dateCreated 排序以获取最新的更新记录以及按来源排序。

  2. 我正在使用 Java API 从 Mongo 获取记录。如果有人帮助我找到如何将相同的查询与 java 一起使用,我将不胜感激。

希望我的问题很清楚。提前致谢。

最佳答案

从您将(并且您将,不是吗 - 点头同意)阅读的文档中,您会发现您正在使用的 find 命令的第一个参数是所谓的查询文档。在本文档中,您将指定字段和条件的列表,以“逗号”分隔,这相当于 SQL 等声明性语法中的 and 条件。

您的查询的问题是它无效,并且不匹配任何内容。正确的语法如下:

db.person.find({"source":"Naukri", dateCreated:{$exists:true}})
    .sort({dateCreated: -1})
    .limit(10)

所以现在这将根据为“source”提供的value 以及“dateCreated”字段存在的位置进行过滤,这意味着它在那里并且包含一些东西。

我建议查看下面的链接,第一个链接涉及构造 mongoDB 查询和 find 方法及其参数。所有功能都适用于每种语言的实现。

至于 Java API 和如何使用,有不同的方法,具体取决于您的习惯。 API 提供了一个 BasicDBObject类,它或多或少等同于 JSON 文档符号,并且是一种 HashMap 概念。对于一些更类似于 shell 方法的东西和一个更像一些动态语言方法的帮助器,有 QueryBuilder 类,最后两个链接给出了示例和信息。这些允许链接使您的查询更可读

仅在 Stack Overflow 上就有很多示例。我建议你看看。

http://docs.mongodb.org/manual/tutorial/query-documents/

http://docs.mongodb.org/manual/reference/method/db.collection.find/

How to do this MongoDB query using java?

http://api.mongodb.org/java/2.2/com/mongodb/QueryBuilder.html

关于java - 在 mongodb 中按日期对值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21695896/

相关文章:

Java 准备好的语句不完全工作 - MYSQL

java - jstatd/visualgc 的控制台客户端

php - 有没有办法从其他服务器抓取文件并将它们异步转储到数据库中?

c# - 如何使用 ASP.Net C# 发送批量电子邮件

javascript - 解释 Mongo 中 findOne() 之后链接字段名称的文档在哪里?

node.js - MongoDB 按相关性排序

c# - 提交表单并获取重定向 url

Javamail getContent() fatal error java.lang.NoClassDefFoundError

PHP,从 MySQL 填充的下拉列表中获取 MySQL 查询

mongodb - 为什么MongoDB有集合