Java 在mongodb中按日期对值排序
我是mongodb的新手,我正在尝试按日期对所有行进行排序。我有来自不同来源的记录,我试图将它们分开分类。在将某些记录写入数据库时,我没有更新创建的日期。后来,我找到并将Java 在mongodb中按日期对值排序,java,mysql,mongodb,mongodb-query,Java,Mysql,Mongodb,Mongodb Query,我是mongodb的新手,我正在尝试按日期对所有行进行排序。我有来自不同来源的记录,我试图将它们分开分类。在将某些记录写入数据库时,我没有更新创建的日期。后来,我找到并将dateCreated添加到数据库中的所有记录中。假设我总共有4000条记录,前1000条我没有dateCreated。最新的3000人有这个专栏。在这里,我试图使用dateCreated列获取上次更新的记录。这是我的密码 db.person.find({"source":"Naukri"}&{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
排序以获得最新更新的记录,以及按来源排序希望我的问题清楚。提前感谢。您的查询不正确。请按以下方式更新:
db.person.find({"source":"Naukri", dateCreated:{$exists:true}}).sort({dateCreated: 1}).limit(10)
Mongo mongo = ...
DB db = mongo.getDB("yourDbName");
DBCollection coll = db.getCollection("person");
DBObject query = new BasicDBObject();
query.put("source", "Naukri");
query.put("dateCreated", new BasicDBObject($exists : true));
DBCursor cur = coll.find(query).sort(new BasicDBObject("dateCreated", 1)).limit(10);
while(cur.hasNext()) {
DBObject obj = cur.next();
// Get data from the result object here
}
在Java中,可以按如下方式执行:
db.person.find({"source":"Naukri", dateCreated:{$exists:true}}).sort({dateCreated: 1}).limit(10)
Mongo mongo = ...
DB db = mongo.getDB("yourDbName");
DBCollection coll = db.getCollection("person");
DBObject query = new BasicDBObject();
query.put("source", "Naukri");
query.put("dateCreated", new BasicDBObject($exists : true));
DBCursor cur = coll.find(query).sort(new BasicDBObject("dateCreated", 1)).limit(10);
while(cur.hasNext()) {
DBObject obj = cur.next();
// Get data from the result object here
}
从您将要阅读的文档(您将要阅读,不是吗-nod yes)中,您将发现您正在使用的find命令的第一个参数是所谓的查询文档。在本文档中,您指定了字段和条件的列表,“逗号”分隔,这相当于SQL等声明性语法中的和条件 您的查询的问题是它无效,并且与任何内容都不匹配。正确的语法如下所示:
db.person.find({"source":"Naukri", dateCreated:{$exists:true}})
.sort({dateCreated: -1})
.limit(10)
因此,现在它将通过为“source”提供的值和“dateCreated”字段所在的位置进行过滤,这意味着它在那里并且包含一些内容
我建议查看下面的链接,这两个链接中的第一个涉及构造mongoDB查询和find方法及其参数。所有的功能都转化为每种语言的实现
至于javaapi和如何使用,有不同的方法,这取决于您是否熟悉。API提供了一个或多或少与JSON文档表示法等效的类,它有点像hashmap概念。为了更接近shell方法,帮助程序更像一些动态语言方法,有一个QueryBuilder类,最后两个链接给出了该类的示例和信息。这些允许链接使查询更具可读性
单是堆栈溢出就有很多例子。我建议你看看
符号和来自哪里?这不是有效的语法..我想非常感谢您的时间和找到我犯的错误。我很感谢你。你详细的回答对我很有帮助。我知道(,)在mysql中等于(&)。我不知道我怎么会犯这么简单的错误。虽然你的回答让我去研究文档,在那里我可以提高我的知识。我再次感谢你们花了这么多时间给我一个如此简短而美丽的回答。