我是 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。
所以我需要帮助,
如何按
dateCreated
排序以获取最新的更新记录以及按来源排序。我正在使用 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/